Check-in [91a7d26cc0]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:update curl to version 7.76.0
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 91a7d26cc05e2c314118ec876f8da11eab0ab23f
User & Date: chw 2021-03-31 11:53:58.591
Context
2021-03-31
21:01
fix divide by zero in tksvg check-in: 57d3d1feef user: chw tags: trunk
11:53
update curl to version 7.76.0 check-in: 91a7d26cc0 user: chw tags: trunk
11:09
add selected tcl upstream changes check-in: fb16ed8c2b user: chw tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to jni/curl/Android.mk.
1
2
3
4
5
6
7
8
9
10
11
LOCAL_PATH:= $(call my-dir)

CFLAGS := -DHAVE_CONFIG_H -O2 -Dmain=curl_main -DBUILDING_LIBCURL=1 \
	  -DCURL_OFF_T=off_t -DSIZEOF_CURL_OFF_T=SIZEOF_OFF_T

include $(CLEAR_VARS)
include $(LOCAL_PATH)/lib/Makefile.inc
include $(LOCAL_PATH)/src/Makefile.inc

LOCAL_MODULE := curl




|







1
2
3
4
5
6
7
8
9
10
11
LOCAL_PATH:= $(call my-dir)

CFLAGS := -DHAVE_CONFIG_H -O2 -Dmain=curl_main -DBUILDING_LIBCURL=1 \
	  -DSIZEOF_CURL_OFF_T=SIZEOF_OFF_T

include $(CLEAR_VARS)
include $(LOCAL_PATH)/lib/Makefile.inc
include $(LOCAL_PATH)/src/Makefile.inc

LOCAL_MODULE := curl

Changes to jni/curl/CHANGES.
1
2
3
4
5
6
7
8









































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































9
10
11
12
13
14
15
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog










































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Version 7.75.0 (3 Feb 2021)

Daniel Stenberg (3 Feb 2021)
- RELEASE-NOTES: synced

- THANKS: added contributors from 7.75.0









>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog

Version 7.76.0 (31 Mar 2021)

Daniel Stenberg (31 Mar 2021)
- RELEASE-NOTES: synced
  
  curl 7.76.0 release

- THANKS: added names from 7.76.0

- CURLOPT_AUTOREFERER.3: clarify that it sets the full URL
  
  ... some users may not want that!

- define: remove CURL_DISABLE_NTLM ifdefs
  
  It was never defined anywhere. Fixed disable-scan (test 1165) to also
  scan headers, which found this issue.
  
  Closes #6809

- vtls: fix addsessionid for non-proxy builds
  
  Follow-up to b09c8ee15771c61
  Fixes #6812
  Closes #6811

- [Li Xinwei brought this change]

  cmake: support WinIDN
  
  Closes #6807

- transfer: clear 'referer' in declaration
  
  To silence (false positive) compiler warnings about it.
  
  Follow-up to 7214288898f5625
  
  Reviewed-by: Marcel Raad
  Closes #6810

- [Marc Hoersken brought this change]

  config: fix SSPI enabling NTLM if crypto auth is disabled
  
  Avoid enabling NTLM feature based upon Windows SSPI
  being enabled in case that crypto auth is disabled.
  
  Reported-by: Marcel Raad
  
  Follow-up to #6277
  Fixes #6803
  Closes #6808

- HISTORY: add two 2021 events

- vtls: add 'isproxy' argument to Curl_ssl_get/addsessionid()
  
  To make sure we set and extract the correct session.
  
  Reported-by: Mingtao Yang
  Bug: https://curl.se/docs/CVE-2021-22890.html
  
  CVE-2021-22890

- [Viktor Szakats brought this change]

  transfer: strip credentials from the auto-referer header field
  
  Added test 2081 to verify.
  
  CVE-2021-22876
  
  Bug: https://curl.se/docs/CVE-2021-22876.html

- curl_sasl: fix compiler error with --disable-crypto-auth
  
  ... if libgsasl was found.
  
  Closes #6806

- [Patrick Monnerat brought this change]

  ldap: only set the callback ptr for TLS context when TLS is used
  
  Follow-up to a5eee22e594c2460f
  Fixes #6804
  Closes #6805

- copyright: update copyright year ranges to 2021
  
  Reviewed-by: Emil Engler
  Closes #6802

- send_speed: simplify the checks for if a speed limit is set
  
  ... as we know the value cannot be set to negative: enforced by
  setopt()

- http: cap body data amount during send speed limiting
  
  By making sure never to send off more than the allowed number of bytes
  per second the speed limit logic is given more room to actually work.
  
  Reported-by: Fabian Keil
  Bug: https://curl.se/mail/lib-2021-03/0042.html
  Closes #6797

- urldata: merge "struct DynamicStatic" into "struct UrlState"
  
  Both were used for the same purposes and there was no logical separation
  between them. Combined, this also saves 16 bytes in less holes in my
  test build.
  
  Closes #6798

- tests/README.md: mentioned that en_US.UTF-8 is required
  
  Reported-by: Oumph on github
  Fixes #6768

- HISTORY: fixed the Mac OS X 10.1 release date
  
  Based on what Wikipedia says

Jay Satiro (26 Mar 2021)
- examples: Remove threaded-shared-conn.c due to bug
  
  Known bug 11.11 is the shared object's connection cache is not thread
  safe, so we should not have an example for it.
  
  Ref: https://github.com/curl/curl/issues/4915
  Ref: https://curl.se/docs/knownbugs.html#A_shared_connection_cache_is_not
  
  Closes https://github.com/curl/curl/pull/6795

- KNOWN_BUGS: Update 11.9 - DoH option inheritance
  
  - Add description: Explain that some options aren't inherited because
    they are not relevant for the DoH SSL connections or may result in
    unexpected behavior.
  
  - Remove the reference to #4578 (SSL verify options not inherited) since
    that was fixed by #6597 (separate DoH-specific options for verify).
  
  - Explain that DoH-specific options (those created by #6597) are
    available: CURLOPT_DOH_SSL_VERIFYHOST, CURLOPT_DOH_SSL_VERIFYPEER and
    CURLOPT_DOH_SSL_VERIFYSTATUS.
  
  - Add a reference to #6605 and explain that the user's debug function is
    not inherited because it would be unexpected to pass internal handles
    (ie DoH handles) to the user's callback.
  
  Closes https://github.com/curl/curl/issues/6605

Daniel Stenberg (26 Mar 2021)
- curl_easy_setopt.3: add curl_easy_option* functions to SEE ALSO

- [Jean-Philippe Menil brought this change]

  openssl: ensure to check SSL_CTX_set_alpn_protos return values
  
  SSL_CTX_set_alpn_protos() return 0 on success, and non-0 on failure
  
  Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
  
  Closes #6794

- multi: close the connection when h2=>h1 downgrading
  
  Otherwise libcurl is likely to reuse the connection again in the next
  attempt since the connection reuse logic doesn't take downgrades into
  account.
  
  Reported-by: Anthony Ramine
  Fixes #6788
  Closes #6793

- openssl: set the transfer pointer for logging early
  
  Otherwise, the transfer will be NULL in the trace function when the
  early handshake details arrive and then curl won't show them.
  
  Regresssion in 7.75.0
  
  Reported-by: David Hu
  Fixes #6783
  Closes #6792

- RELEASE-NOTES: synced

- TODO: Custom progress meter update interval
  
  Ref: https://stackoverflow.com/q/66789977/93747

- docs/ABI: tighten up the language
  
  Make the promises more firm
  
  Closes #6786

- openldap: disconnect better
  
  Instead of clearing the callback argument in disconnect, set it to the
  (new) transfer to make sure the correct data is passed to the callbacks.
  
  Follow-up to e467ea3bd937f38
  Assisted-by: Patrick Monnerat
  Closes #6787

- libssh2: kdb_callback: get the right struct pointer
  
  After the recent conn/data refactor in this source file, this function
  was mistakenly still getting the old struct pointer which would lead to
  crash on servers with keyboard-interactive auth enabled.
  
  Follow-up to a304051620b92e12b (shipped in 7.75.0)
  
  Reported-by: Christian Schmitz
  Fixes #6691
  Closes #6782

- tftp: remove unused struct fields
  
  Follow-up to d3d90ad9c00530d
  
  Closes #6781

- openldap: avoid NULL pointer dereferences
  
  Follow-up to a59c33ceffb8f78
  Reported-by: Patrick Monnerat
  Fixes #6676
  Closes #6780

- http: strip default port from URL sent to proxy
  
  To make sure the Host: header and the URL provide the same authority
  portion when sent to the proxy, strip the default port number from the
  URL if one was provided.
  
  Reported-by: Michael Brown
  Fixes #6769
  Closes #6778

- azure: disable test 433 on azure-ubuntu
  
  Something in that environment sets XDG_CONFIG_HOME for us in a way that
  breaks the test.
  
  Reported-by: Marc Hörsken
  Fixes #6739
  Closes #6777

- tftp: remove the 3600 second default timeout
  
  ... it was never meant to be there.
  
  Reported-by: Tomas Berger
  Fixes #6774
  Closes #6776

- docs: make gen.pl support *italic* and **bold**
  
  Remove some nroffisms from the cmdline doc files to simplify editing,
  and instead support this markdown style.
  
  Closes #6771

- ngtcp2: sync with recent API updates
  
  Closes #6770

- RELEASE-NOTES: synced

- libssh2:ssh_connect: clear session pointer after free
  
  If libssh2_knownhost_init() returns NULL, like in an OOM situation, the
  ssh session was freed but the pointer wasn't cleared which made libcurl
  later call libssh2 to cleanup using the stale pointer.
  
  Fixes #6764
  Closes #6766

- [Jacob Hoffman-Andrews brought this change]

  docs: document version of crustls dependency
  
  This also pins a specific release in the Travis test so future
  API-breaking changins in crustls won't break curl builds.
  
  Add RUSTLS documentation to release tarball.
  
  Enable running tests for rustls, minus FTP tests (require
  connect_blocking, which rustls doesn't implement) and 313 (requires CRL
  handling).
  
  Closes #6763

- [Jacob Hoffman-Andrews brought this change]

  rustls: Handle close_notify.
  
  If we get a close_notify, treat that as EOF. If we get an EOF from the
  TCP stream, treat that as an error (because we should have ended the
  connection earlier, when we got a close_notify).
  
  Closes #6763

- docs: clarify timeouts for queued transfers in multi API
  
  Closes #6758

- ftpserver: only load the preprocessed test file
  
  We always preprocess and tests are no longer sensible to load "raw"
  
  Closes #6738

- tests: use %TESTNUMBER instead of fixed number
  
  This makes the tests easier to copy and relocate to other test numbers
  without having to update content.
  
  Closes #6738

- KNOWN_BUGS: CURLOPT_OPENSOCKETPAIRFUNCTION is missing
  
  Closes #5747

- TODO: provide timing info for each redirect
  
  Closes #6743

Jay Satiro (17 Mar 2021)
- docs: Add SSL backend names to CURL_SSL_BACKEND
  
  - Document the names that can be used with CURL_SSL_BACKEND:
    bearssl, gnutls, gskit, mbedtls, mesalink, nss, openssl, rustls,
    schannel, secure-transport, wolfssl
  
  Ref: https://github.com/curl/curl/issues/2209#issuecomment-360623286
  Ref: https://github.com/curl/curl/issues/6717#issuecomment-800745201
  
  Closes https://github.com/curl/curl/pull/6755

- docs: Explain DOH transfers inherit some SSL settings
  
  - Document in DOH that some SSL settings are inherited but DOH hostname
    and peer verification are not and are controlled separately.
  
  - Document that CURLOPT_SSL_CTX_FUNCTION is inherited by DOH handles but
    we're considering changing behavior to no longer inherit it. Request
    feedback.
  
  Closes https://github.com/curl/curl/pull/6688

Daniel Stenberg (17 Mar 2021)
- http: make 416 not fail with resume + CURLOPT_FAILONERRROR
  
  When asked to resume a download, libcurl will convert that to HTTP logic
  and if then the entire file is already transferred it will result in a
  416 response from the HTTP server. With CURLOPT_FAILONERRROR set in that
  scenario, it should *not* lead to an error return.
  
  Updated test 1156, added test 1273
  
  Reported-by: Jonathan Watt
  Fixes #6740
  Closes #6753

- Curl_timeleft: check both timeouts during connect
  
  The duration of a connect and the total transfer are calculated from two
  different time-stamps. It can end up with the total timeout triggering
  before the connect timeout expires and we should make sure to
  acknowledge whichever timeout that is reached first.
  
  This is especially notable when a transfer first sits in PENDING, as
  that time is counted in the total time but the connect timeout is based
  on the time since the handle changed to the CONNECT state.
  
  The CONNECTTIMEOUT is per connect attempt. The TIMEOUT is for the entire
  operation.
  
  Fixes #6744
  Closes #6745
  Reported-by: Andrei Bica
  Assisted-by: Jay Satiro

- configure: remove use of deprecated macros
  
  AC_HEADER_TIME, AC_HEADER_STDC and AC_TYPE_SIGNAL

- configure: make AC_TRY_* into AC_*_IFELSE
  
  ... as the former versions are deprecated.

- configure: s/AC_HELP_STRING/AS_HELP_STRING
  
  AC_HELP_STRING is deprecated in 2.70+ and I believe AS_HELP_STRING works
  already since 2.59 so bump the minimum required version to that.
  
  Reported-by: Emil Engler
  Fixes #6647
  Closes #6748

- RELEASE-NOTES: synced

- travis: use ubuntu nghttp2 package instead of build our own
  
  Closes #6751

- travis: bump wolfssl to 4.7.0

- travis: only build wolfssl when needed
  
  Closes #6751

- [Jacob Hoffman-Andrews brought this change]

  rustls: allocate a buffer for TLS data.
  
  Previously, rustls was using an on-stack array for TLS data. However,
  crustls has an (unusual) requirement that buffers it deals with are
  initialized before writing to them. By using calloc, we can ensure the
  buffer is initialized once and then reuse it across calls.
  
  Closes #6742

- travis: add a rustls build
  
  ... that doesn't run any tests (yet)
  
  Closes #6750

- HTTP2: remove the outdated remark about multiplexing for the tool

- [Robert Ronto brought this change]

  http2: don't set KEEP_SEND when there's no more data to be sent
  
  this should fix an issue where curl sometimes doesn't send out a request
  with authorization info after a 401 is received over http2
  
  Closes #6747

Marc Hoersken (15 Mar 2021)
- config: fix building SMB with configure using Win32 Crypto
  
  Align conditions for NTLM features between CMake and configure
  builds by differentiating between USE_NTLM and USE_CURL_NTLM_CORE,
  just like curl_setup.h does internally to detect support of:
  
  - USE_NTLM: required for NTLM crypto authentication feature
  - USE_CURL_NTLM_CORE: required for SMB protocol
  
  Implement USE_WIN32_CRYPTO detection by checking for Crypt functions
  in wincrypt.h which are not available in the Windows App environment.
  
  Link advapi32 and crypt32 for Crypto API and Schannel SSL backend.
  Fix condition of Schannel SSL backend in CMake build accordingly.
  
  Reviewed-by: Marcel Raad
  
  Closes #6277

- config: fix detection of restricted Windows App environment
  
  Move the detection of the restricted Windows App environment
  in curl_setup.h before the definition of USE_WIN32_CRYPTO
  via included config-win32.h in case no build system is used.
  
  Reviewed-by: Marcel Raad
  
  Part of #6277

Daniel Stenberg (15 Mar 2021)
- HISTORY: curl 7.7.2 was the first version used in Mac OS X 10.1

- gen.pl: quote "bare" minuses in the nroff curl.1
  
  Reported-by: Alejandro Colomar
  Fixes #6698
  Closes #6722

Daniel Gustafsson (14 Mar 2021)
- hsts: remove unused defines
  
  MAX_HSTS_SUBLEN and MAX_HSTS_SUBLENSTR were unused from the initial commit,
  and mostly likely leftovers from early development.  Remove as they're not
  used for anything.
  
  Closes #6741
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (12 Mar 2021)
- github: add torture-ftp for FTP-only torture testing
  
  and at 20% to try to keep the run-time reasonable
  
  Closes #6728

- travis: split "torture" into a separate "events" build as well
  
  Run torture without FTP and reducing coverage to 20%
  
  For some reason the torture tests now run a lot slower on travis and run
  into the 50 minute limit all the time.
  
  Closes #6728

- ftp: fix memory leak in ftp_done
  
  If after a transfer is complete Curl_GetFTPResponse() returns an error,
  curl would not free the ftp->pathalloc block.
  
  Found by torture-testing test 576
  
  Closes #6737

- [oxalica brought this change]

  http2: fail if connection terminated without END_STREAM
  
  Closes #6736

- RELEASE-NOTES: synced

- [Jacob Hoffman-Andrews brought this change]

  rustls: support CURLOPT_SSL_VERIFYPEER
  
  This requires the latest main branch of crustls, which provides
  rustls_client_config_builder_dangerous_set_certificate_verifier and
  rustls_client_config_builder_set_enable_sni.
  
  This refactors the session setup into its own function, and adds a new
  function cr_hostname_is_ip. Because crustls doesn't support verification
  of IP addresses, special handling is needed: We disable SNI and set a
  placeholder hostname (which never actually gets sent on the wire).
  
  Closes #6719

Daniel Gustafsson (12 Mar 2021)
- cookies: Fix potential NULL pointer deref with PSL
  
  Curl_cookie_init can be called with data being NULL, and this can in turn
  be passed to Curl_cookie_add, meaning that both functions must be careful
  to only use data where it's checked for being a NULL pointer.  The libpsl
  support code does however dereference data without checking, so if we are
  indeed having an unset data pointer we cannot PSL check the cookiedomain.
  
  This is currently not a reachable dereference, as the only caller with a
  NULL data isn't passing a file to initialize cookies from, but since the
  API has this contract let's ensure we hold it.
  
  Closes #6731
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (12 Mar 2021)
- [Michael Hordijk brought this change]

  configure: only add OpenSSL paths if they are defined
  
  Add paths for OpenSSL compiling and linking only if they have been
  defined.  If they haven't been defined, we'll assume that the paths are
  already available to the toolchain.
  
  Closes #6730

Jay Satiro (12 Mar 2021)
- retry.d: Clarify transient 5xx HTTP response codes
  
  - Clarify the only 5xx response codes that are treated as transient are
    500, 502, 503 and 504.
  
  Prior to this change it said it treated all 5xx as transient, but the
  code says otherwise.
  
  Ref: https://github.com/curl/curl/blob/curl-7_75_0/src/tool_operate.c#L462-L495
  
  Closes https://github.com/curl/curl/pull/6724

- retry-all-errors.d: Explain curl errors versus HTTP response errors
  
  - Add a paragraph explaining that curl does not consider HTTP response
    errors as curl errors, and how that behavior can be modified by using
    --retry and --fail.
  
  The --retry-all-errors doc says "Retry on any error" which some users
  may find misleading without the added explanation.
  
  Ref: https://curl.se/docs/faq.html#Why_do_I_get_downloaded_data_eve
  Ref: https://curl.se/docs/faq.html#curl_doesn_t_return_error_for_HT
  
  Reported-by: Lawrence Gripper
  
  Fixes https://github.com/curl/curl/issues/6712
  Closes https://github.com/curl/curl/pull/6720

Daniel Stenberg (11 Mar 2021)
- travis: switch ngtcp2 build over to quictls
  
  The ngtcp2 project switched over to using the quictls OpenSSL fork
  instead of their own patched OpenSSL. We follow suit.
  
  Closes #6729

- test220/314: adjust to run with Hyper

- c-hyper: support automatic content-encoding
  
  Closes #6727

- http: remove superfluous NULL assign
  
  Closes #6727

- tool_operate: bail if set CURLOPT_HTTP09_ALLOWED returns error
  
  Closes #6727

- setopt: error on CURLOPT_HTTP09_ALLOWED set true with Hyper
  
  Not supported.
  
  Closes #6727

- test306: make it not run with Hyper
  
  ... as it tests HTTP/0.9 which Hyper doesn't support.

- test304: header CRLF cleanup to work with Hyper

- FTP: allow SIZE to fail when doing (resumed) upload
  
  Added test 362 to verify.
  
  Reported-by: Jordan Brown
  Regression since 7ea2e1d0c5a7f (7.73.0)
  Fixes #6715
  Closes #6725

- configure: provide Largefile feature for curl-config
  
  ... as cmake now does it correctly, and make test1014 check for it
  
  Closes #6702

- config: remove CURL_SIZEOF_CURL_OFF_T use only SIZEOF_CURL_OFF_T
  
  Make the code consistently use a single name for the size of the
  "curl_off_t" type.
  
  Closes #6702

Jay Satiro (10 Mar 2021)
- [Jun-ya Kato brought this change]

  ngtcp2: Fix build error due to change in ngtcp2_addr_init
  
  ngtcp2/ngtcp2@b8d90a9 changed the function prototype.
  
  Closes https://github.com/curl/curl/pull/6716

Daniel Stenberg (10 Mar 2021)
- [ejanchivdorj brought this change]

  multi: update pending list when removing handle
  
  when removing a handle, most of the lists are updated but pending list
  is not updated. Updating now.
  
  Closes #6713

- [kokke brought this change]

  lib1536: check ptr against NULL before dereferencing it
  
  Closes #6710

- [kokke brought this change]

  lib1537: check ptr against NULL before dereferencing it
  
  Fixes #6707
  Closes #6708

- travis: make torture tests skip TLS-SRP tests
  
  ... as it seems to often hang.
  
  Also: skip the "normal" tests as they're already run by many other
  builds.
  
  Closes #6705

- openssl: adapt to v3's new const for a few API calls
  
  Closes #6703

- quiche: fix crash when failing to connect
  
  Reported-by: ウさん
  Fixes #6664
  Closes #6701

- RELEASE-NOTES: synced
  
  Fixed the release counter and added a missing contributor

- RELEASE-NOTES: synced

- dynbuf: bump the max HTTP request to 1MB
  
  Raised from 128KB to allow longer request headers.
  
  Reported-by: Carl Zogheib
  Fixes #6681
  Closes #6685

Jay Satiro (6 Mar 2021)
- schannel: Evaluate CURLOPT_SSL_OPTIONS via SSL_SET_OPTION macro
  
  - Change use of those options from CURLOPT_SSL_OPTIONS that are not
    already evaluated via SSL_SET_OPTION in schannel and secure transport
    to use that instead of data->set.ssl.optname.
  
  Example:
  
  Evaluate SSL_SET_OPTION(no_revoke) instead of data->set.ssl.no_revoke.
  
  This change is because options set via CURLOPT_SSL_OPTIONS
  (data->set.ssl.optname) are separate from those set for HTTPS proxy via
  CURLOPT_PROXY_SSL_OPTIONS (data->set.proxy_ssl.optname). The
  SSL_SET_OPTION macro determines whether the connection is for HTTPS
  proxy and based on that which option to evaluate.
  
  Since neither Schannel nor Secure Transport backends currently support
  HTTPS proxy in libcurl, this change is for posterity and has no other
  effect.
  
  Closes https://github.com/curl/curl/pull/6690

- [kokke brought this change]

  c-hyper: Remove superfluous pointer check
  
  `n` pointer is never NULL once set. Found by static analysis.
  
  Ref: https://github.com/curl/curl/issues/6696
  
  Closes https://github.com/curl/curl/pull/6697

- version.d: Add missing features to the features list
  
  - Add missing entries for gsasl, Kerberos, NTLM_WB, TrackMemory,
    Unicode and zstd.
  
  - Remove krb4 since it's no longer a feature.
  
  Reported-by: Ádler Jonas Gross
  
  Fixes https://github.com/curl/curl/issues/6677
  Closes https://github.com/curl/curl/pull/6687

- [Vladimir Varlamov brought this change]

  docs: add missing Arg tag to --stderr
  
  Prior to this change the required argument was not shown.
  
  curl.1 before: --stderr
  curl.1 after: --stderr <file>
  
  curl --help before:
       --stderr        Where to redirect stderr
  
  curl --help after:
       --stderr <file>  Where to redirect stderr
  
  Closes https://github.com/curl/curl/pull/6692

- projects: Update VS projects for OpenSSL 1.1.x
  
  - Update VS project templates to use the OpenSSL lib names and include
    directories for OpenSSL 1.1.x.
  
  This change means the VS project files will now build only with OpenSSL
  1.1.x when an OpenSSL configuration is chosen. Prior to this change the
  project files built only with OpenSSL 1.0.x (end-of-life) when an
  OpenSSL configuration was chosen.
  
  The template changes in this commit were made by script:
  
  libeay32.lib => libcrypto.lib
  ssleay32.lib => libssl.lib
  ..\..\..\..\..\openssl\inc32 => ..\..\..\..\..\openssl\include
  
  And since the output directory now contains the includes it's prepended:
  ..\..\..\..\..\openssl\build\Win{32,64}\VC{6..15}\{DLL,LIB}
  {Debug,Release}\include
  
  - Change build-openssl.bat to copy the build's include directory to the
    output directory (as seen above).
  
  Each build has its own opensslconf.h which is different so we can't just
  include the source include directory any longer.
  
  Note the include directory in the output directory is a full copy from
  the build so technically we don't need to include the OpenSSL source
  include directory in the template. However, I left it last in case the
  user made a custom OpenSSL build using the old method which would put
  opensslconf in the OpenSSL source include directory.
  
  - Change build-openssl.bat to use a temporary install directory that is
    different from the temporary build directory.
  
  For OpenSSL 1.1.x the temporary paths must be separate not a descendant
  of the other, otherwise pdb files will be lost between builds.
  
  Ref: https://curl.se/mail/lib-2018-10/0049.html
  Ref: https://gist.github.com/jay/125191c35bbeb894444eff827651f755
  Ref; https://github.com/openssl/openssl/issues/10005
  
  Fixes https://github.com/curl/curl/issues/984
  Closes https://github.com/curl/curl/pull/6675

- doh: Inherit CURLOPT_STDERR from user's easy handle
  
  Prior to this change if the user set their easy handle's error stream
  to something other than stderr it was not inherited by the doh handles,
  which meant that they would still write to the default standard error
  stream (stderr) for verbose output.
  
  Bug: https://github.com/curl/curl/issues/6605
  Reported-by: arvids-kokins-bidstack@users.noreply.github.com
  
  Closes https://github.com/curl/curl/pull/6661

Marc Hoersken (1 Mar 2021)
- CI/azure: replace python-impacket with python3-impacket
  
  As of this month Azure DevOps uses Ubuntu 20.04 LTS which
  no longer supports Python 2 and instead ships Python 3.
  
  Closes #6678

- runtests.pl: kill processes locking test log files
  
  Introduce a new runtests.pl command option: -rm
  
  For now only required and implemented for Windows.
  Ignore stunnel logs due to long running processes.
  
  Requires Sysinternals handle[64].exe to be on PATH.
  
  Reviewed-by: Jay Satiro
  
  Ref: #6058
  Closes #6179

- pathhelp.pm: fix use of pwd -L in Msys environment
  
  While Msys2 has a pwd binary which supports -L,
  Msys1 only has a shell built-in with that feature.
  
  Reviewed-by: Jay Satiro
  
  Part of #6179

Daniel Gustafsson (1 Mar 2021)
- ldap: use correct memory free function
  
  unescaped is coming from Curl_urldecode and not a unicode conversion
  function, so reclaiming its memory should be performed with a normal
  call to free rather than curlx_unicodefree.  In reality, this is the
  same thing as curlx_unicodefree is implemented as a call to free but
  that's not guaranteed to always hold.  Using the curlx macro present
  issues with memory debugging as well.
  
  Closes #6671
  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- url: fix typo in comment
  
  Correct a small typo which snuck in with a304051620.

Jay Satiro (28 Feb 2021)
- tool_help: Increase space between option and description
  
  - Increase the minimum number of spaces between the option and the
    description from 1 to 2.
  
  Before:
  ~~~
   -u, --user <user:password> Server user and password
   -A, --user-agent <name> Send User-Agent <name> to server
   -v, --verbose       Make the operation more talkative
   -V, --version       Show version number and quit
   -w, --write-out <format> Use output FORMAT after completion
       --xattr         Store metadata in extended file attributes
  ~~~
  
  After:
  ~~~
   -u, --user <user:password>  Server user and password
   -A, --user-agent <name>  Send User-Agent <name> to server
   -v, --verbose       Make the operation more talkative
   -V, --version       Show version number and quit
   -w, --write-out <format>  Use output FORMAT after completion
       --xattr         Store metadata in extended file attributes
  ~~~
  
  Closes https://github.com/curl/curl/pull/6674

Daniel Stenberg (27 Feb 2021)
- curl: set CURLOPT_NEW_FILE_PERMS if requested
  
  The --create-file-mode code logic accepted the value but never actually
  passed it on to libcurl!
  
  Follow-up to a7696c73436f (shipped in 7.75.0)
  Reported-by: Johannes Lesr
  Fixes #6657
  Closes #6666

- tool_operate: check argc before accessing argv[1]
  
  Follow-up to 09363500b
  Reported-by: Emil Engler
  Reviewed-by: Daniel Gustafsson
  Closes #6668

Daniel Gustafsson (26 Feb 2021)
- [Jean-Philippe Menil brought this change]

  openssl: remove get_ssl_version_txt in favor of SSL_get_version
  
  openssl: use SSL_get_version to get connection protocol
  
  Replace our bespoke get_ssl_version_txt in favor of SSL_get_version.
  We can get rid of few lines of code, since SSL_get_version achieve
  the exact same thing
  
  Closes #6665
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>

- gnutls: Fix nettle discovery
  
  Commit e06fa7462ac258c removed support for libgcrypt leaving only
  support for nettle which has been the default crypto library in
  GnuTLS for a long time. There were however a few conditionals on
  USE_GNUTLS_NETTLE which cause compilation errors in the metalink
  code (as it used the gcrypt fallback instead as a result). See the
  below autobuild for an example of the error:
  
    https://curl.se/dev/log.cgi?id=20210225123226-30704#prob1
  
  This removes all uses of USE_GNUTLS_NETTLE and also removes the
  gcrypt support from the metalink code while at it.
  
  Closes #6656
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- cookies: Support multiple -b parameters
  
  Previously only a single -b cookie parameter was supported with the last
  one winning.  This adds support for supplying multiple -b params to have
  them serialized semicolon separated.  Both cookiefiles and cookies can be
  entered multiple times.
  
  Closes #6649
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (25 Feb 2021)
- build: remove all traces of USE_BLOCKING_SOCKETS
  
  libcurl doesn't behave properly with the define set
  
  Closes #6655

- RELEASE-NOTES: synced

Daniel Gustafsson (25 Feb 2021)
- docs: Fix typos
  
  Random typos spotted when skimming docs.

- cookies: Use named parameters in header prototypes
  
  Align header with project style of using named parameters in the
  function prototypes to aid readability and self-documentation.
  
  Closes #6653
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (24 Feb 2021)
- urldata: make 'actions[]' use unsigned char instead of int
  
  ... as it only needs a few bits per index anyway.
  
  Reviewed-by: Daniel Gustafsson
  Closes #6648

- configure: fail if --with-quiche is used and quiche isn't found
  
  Closes #6652

- [Gregor Jasny brought this change]

  cmake: use CMAKE_INSTALL_INCLUDEDIR indirection
  
  Reviewed-by: Sergei Nikulov
  Closes #6440

Viktor Szakats (23 Feb 2021)
- mingw: enable using strcasecmp()
  
  This makes the 'Features:' list sorted case-insensitively,
  bringing output in-line with *nix builds.
  
  Reviewed-by: Jay Satiro
  Closes #6644

- build: delete unused feature guards
  
  - `HAVE_STRNCASECMP`
  - `HAVE_TCGETATTR`
  - `HAVE_TCSETATTR`
  
  Reviewed-by: Jay Satiro
  Reviewed-by: Daniel Stenberg
  Closes #6645

Jay Satiro (23 Feb 2021)
- docs: add CURLOPT_CURLU to 'See also' in curl_url_ functions
  
  Closes https://github.com/curl/curl/pull/6639

Daniel Stenberg (23 Feb 2021)
- [Jacob Hoffman-Andrews brought this change]

  configure: make hyper opt-in, and fail if missing
  
  Previously, configure would look for hyper by default, and use it if
  found; otherwise it would not use hyper, and not error.
  
  Now, configure will not look for hyper unless --with-hyper is passed. If
  configure looks for hyper and fails, it will error.
  
  Also, add -ld -lpthread -lm to Hyper's libs. I think they are required.
  
  Closes #6598

- multi: do once-per-transfer inits in before_perform in DID state
  
  ... since the state machine might go to RATELIMITING and then back to
  PERFORMING doing once-per-transfer inits in that function is wrong and
  it caused problems with receiving chunked HTTP and it set the
  PRETRANSFER time much too often...
  
  Regression from b68dc34af341805aeb7b3715 (shipped in 7.75.0)
  
  Reported-by: Amaury Denoyelle
  Fixes #6640
  Closes #6641

- RELEASE-NOTES: synced

- CODE_STYLE.md: fix broken link to INTERNALS
  
  ... the link would only work if browsed on GitHub, while this link now
  takes the user to the website instead and thus should work on either.
  
  Reported-by: David Demelier

- curl_url_set.3: mention CURLU_PATH_AS_IS
  
  ... it has been supported since the URL API was added.
  
  Bug: https://curl.se/mail/lib-2021-02/0046.html
  
  Closes #6638

Viktor Szakats (21 Feb 2021)
- time: enable 64-bit time_t in supported mingw environments
  
  (Unless 32-bit `time_t` is selected manually via the `_USE_32BIT_TIME_T`
  mingw macro.)
  
  Previously, 64-bit `time_t` was enabled on VS2005 and newer only, and
  32-bit `time_t` was used on all other Windows builds.
  
  Assisted-by: Jay Satiro
  Closes #6636

Jay Satiro (20 Feb 2021)
- test1188: Check for --fail HTTP status
  
  - Change the test to check for curl error on HTTP 404 Not Found.
  
  test1188 tests "--write-out with %{onerror} and %{urlnum} to stderr".
  Prior to this change it did that by specifying a non-existent host which
  would cause an error. ISPs may hijack DNS and resolve non-existent hosts
  so the test would not work if that was the case.
  
  Ref: https://en.wikipedia.org/wiki/DNS_hijacking#Manipulation_by_ISPs
  Ref: https://github.com/curl/curl/issues/6621
  Ref: https://github.com/curl/curl/pull/6623
  
  Closes https://github.com/curl/curl/pull/6637

- memdebug: close debug logfile explicitly on exit
  
  - Use atexit to register a dbg cleanup function that closes the logfile.
  
  LeakSantizier (LSAN) calls _exit() instead of exit() when a leak is
  detected on exit so the logfile must be closed explicitly or data could
  be lost. Though _exit() does not call atexit handlers such as this,
  LSAN's call to _exit() comes after the atexit handlers are called.
  
  Prior to this change the logfile was not explicitly closed so it was
  possible that if LSAN detected a leak and called _exit (which does
  not flush or close files like exit) then the logfile could be missing
  data. That could then cause curl's memanalyze to report false leaks
  (eg a malloc was recorded to the logfile but the corresponding free was
  discarded from the buffer instead of written to the logfile, then
  memanalyze reports that as a leak).
  
  Ref: https://github.com/google/sanitizers/issues/1374
  
  Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541
  
  Closes https://github.com/curl/curl/pull/6620

- curl_multibyte: always return a heap-allocated copy of string
  
  - Change the Windows char <-> UTF-8 conversion functions to return an
    allocated copy of the passed in string instead of the original.
  
  Prior to this change the curlx_convert_ functions would, as what I
  assume was an optimization, not make a copy of the passed in string if
  no conversion was required. No conversion is required in non-UNICODE
  Windows builds since our tchar strings are type char and remain in
  whatever the passed in encoding is, which is assumed to be UTF-8 but may
  be other encoding.
  
  In contrast the UNICODE Windows builds require conversion
  (wchar <-> char) and do return a copy. That inconsistency could lead to
  programming errors where the developer expects a copy, and does not
  realize that won't happen in all cases.
  
  Closes https://github.com/curl/curl/pull/6602

Viktor Szakats (19 Feb 2021)
- http: add new files missed from referrer commit
  
  Ref: 44872aefc2d54f297caf2b0cc887df321bc9d791
  Ref: #6591

- http: add support to read and store the referrer header
  
  - add CURLINFO_REFERER libcurl option
  - add --write-out '%{referer}' command-line option
  - extend --xattr command-line option to fill user.xdg.referrer.url extended
    attribute with the referrer (if there was any)
  
  Closes #6591

Daniel Stenberg (19 Feb 2021)
- urldata: remove the _ORIG suffix from string names
  
  It doesn't provide any useful info but only makes the names longer.
  
  Closes #6624

- url: fix memory leak if OOM in the HSTS handling
  
  Reported-by: Viktor Szakats
  Bug: https://github.com/curl/curl/pull/6627#issuecomment-781626205
  
  Closes #6628

- gnutls: assume nettle crypto support
  
  nettle has been the default crypto library with GnuTLS since 2010. By
  dropping support for the previous libcrypto, we simplify code.
  
  Closes #6625

- asyn-ares: use consistent resolve error message
  
  ... with the help of Curl_resolver_error() which now is moved from
  asyn-thead.c and is provided globally for this purpose.
  
  Follow-up to 35ca04ce1b77636
  
  Makes test 1188 work for c-ares builds
  
  Closes #6626

Viktor Szakats (18 Feb 2021)
- ci: stop building on freebsd-12-1
  
  An updated freebsd-12-2 image was added a few months ago, and this
  older one is consistently failing to go past `pkginstall`:
  ```
  Newer FreeBSD version for package py37-mlt:
  To ignore this error set IGNORE_OSVERSION=yes
  - package: 1202000
  - running kernel: 1201000
  Ignore the mismatch and continue? [Y/n]: pkg: repository FreeBSD contains packages for wrong OS version: FreeBSD:12:amd64
  ```
  
  FreeBSD thread suggests that 12.1 is EOL, and best to avoid.
  
  Ref: https://forums.freebsd.org/threads/78856/
  
  Reviewed-by: Daniel Stenberg
  Closes #6622

Daniel Stenberg (18 Feb 2021)
- test1188: change error from connect to resolve error
  
  Using the %NOLISTENPORT to trigger a connection failure is somewhat
  "risky" (since it isn't guaranteed to not be listened to) and caused
  occasional CI problems. This fix changes the infused error to be a more
  reliable one but still verifies the --write-out functionality properly -
  which is the purpose of this test.
  
  Reported-by: Jay Satiro
  Fixes #6621
  Closes #6623

- url.c: use consistent error message for failed resolve

- BUGS: language polish

- wolfssl: don't store a NULL sessionid
  
  This caused a memory leak as the session id cache entry was still
  erroneously stored with a NULL sessionid and that would later be treated
  as not needed to get freed.
  
  Reported-by: Gisle Vanem
  Fixes #6616
  Closes #6617

- parse_proxy: fix a memory leak in the OOM path
  
  Reported-by: Jay Satiro
  Reviewed-by: Jay Satiro
  Reviewed-by: Emil Engler
  
  Closes #6614
  Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541

Jay Satiro (17 Feb 2021)
- url: fix possible use-after-free in default protocol
  
  Prior to this change if the user specified a default protocol and a
  separately allocated non-absolute URL was used then it was freed
  prematurely, before it was then used to make the replacement URL.
  
  Bug: https://github.com/curl/curl/issues/6604#issuecomment-780138219
  Reported-by: arvids-kokins-bidstack@users.noreply.github.com
  
  Closes https://github.com/curl/curl/pull/6613

Daniel Stenberg (16 Feb 2021)
- multi: rename the multi transfer states
  
  While working on documenting the states it dawned on me that step one is
  to use more descriptive names on the states. This also changes prefix on
  the states to make them shorter in the source.
  
  State names NOT ending with *ing are transitional ones.
  
  Closes #6612

Viktor Szakats (16 Feb 2021)
- http: do not add a referrer header with empty value
  
  Previously an empty 'Referer:' header was added to the HTTP request when
  passing `--referer ';auto'` or `--referer ''` on the command-line. This
  patch makes `--referer` work like `--header 'Referer:'` and will only add
  the header if it has a non-zero length value.
  
  Reviewed-by: Jay Satiro
  Closes #6610

Daniel Stenberg (16 Feb 2021)
- lib: remove 'conn->data' completely
  
  The Curl_easy pointer struct entry in connectdata is now gone. Just
  before commit 215db086e0 landed on January 8, 2021 there were 919
  references to conn->data.
  
  Closes #6608

- openldap: pass 'data' to the callbacks instead of 'conn'

Jay Satiro (15 Feb 2021)
- doh: Fix sharing user's resolve list with DOH handles
  
  - Share the shared object from the user's easy handle with the DOH
    handles.
  
  Prior to this change if the user had set a shared object with shared
  cached DNS (CURL_LOCK_DATA_DNS) for their easy handle then that wasn't
  used by any associated DOH handles, since they used the multi's default
  hostcache.
  
  This change means all the handles now use the same hostcache, which is
  either the shared hostcache from the user created shared object if it
  exists or if not then the multi's default hostcache.
  
  Reported-by: Manuj Bhatia
  
  Fixes https://github.com/curl/curl/issues/6589
  Closes https://github.com/curl/curl/pull/6607

Daniel Stenberg (15 Feb 2021)
- http2: remove conn->data use
  
  ... but instead use a private alternative that points to the "driving
  transfer" from the connection. We set the "user data" associated with
  the connection to be the connectdata struct, but when we drive transfers
  the code still needs to know the pointer to the transfer. We can change
  the user data to become the Curl_easy handle, but with older nghttp2
  version we cannot dynamically update that pointer properly when
  different transfers are used over the same connection.
  
  Closes #6520

- openssl: remove conn->data use
  
  We still make the trace callback function get the connectdata struct
  passed to it, since the callback is anchored on the connection.
  
  Repeatedly updating the callback pointer to set 'data' with
  SSL_CTX_set_msg_callback_arg() doesn't seem to work, probably because
  there might already be messages in the queue with the old pointer.
  
  This code therefore makes sure to set the "logger" handle before using
  OpenSSL calls so that the right easy handle gets used for tracing.
  
  Closes #6522

- RELEASE-NOTES: synced

Jay Satiro (14 Feb 2021)
- doh: add options to disable ssl verification
  
  - New libcurl options CURLOPT_DOH_SSL_VERIFYHOST,
    CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS do the
    same as their respective counterparts.
  
  - New curl tool options --doh-insecure and --doh-cert-status do the same
    as their respective counterparts.
  
  Prior to this change DOH SSL certificate verification settings for
  verifyhost and verifypeer were supposed to be inherited respectively
  from CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER, but due to a bug
  were not. As a result DOH verification remained at the default, ie
  enabled, and it was not possible to disable. This commit changes
  behavior so that the DOH verification settings are independent and not
  inherited.
  
  Ref: https://github.com/curl/curl/pull/4579#issuecomment-554723676
  
  Fixes https://github.com/curl/curl/issues/4578
  Closes https://github.com/curl/curl/pull/6597

- hostip: fix crash in sync resolver builds that use DOH
  
  - Guard some Curl_async accesses with USE_CURL_ASYNC instead of
    !CURLRES_SYNCH.
  
  This is another follow-up to 8335c64 which moved the async struct from
  the connectdata struct into the Curl_easy struct. A previous follow-up
  6cd167a fixed building for sync resolver by guarding some async struct
  accesses with !CURLRES_SYNCH. The problem is since DOH (DNS-over-HTTPS)
  is available as an asynchronous secondary resolver the async struct may
  be used even when libcurl is built for the sync resolver. That means
  that CURLRES_SYNCH and USE_CURL_ASYNC may be defined at the same time.
  
  Closes https://github.com/curl/curl/pull/6603

Daniel Stenberg (13 Feb 2021)
- KNOWN_BUGS: cannot enable LDAPS on Windows with cmake
  
  Reported-by: Jack Boos Yu
  Closes #6284

- KNOWN_BUGS: Excessive HTTP/2 packets with TCP_NODELAY
  
  Reported-by: Alex Xu
  Closes #6363

- http: use credentials from transfer, not connection
  
  HTTP auth "accidentally" worked before this cleanup since the code would
  always overwrite the connection credentials with the credentials from
  the most recent transfer and since HTTP auth is typically done first
  thing, this has not been an issue. It was still wrong and subject to
  possible race conditions or future breakage if the sequence of functions
  would change.
  
  The data.set.str[] strings MUST remain unmodified exactly as set by the
  user, and the credentials to use internally are instead set/updated in
  state.aptr.*
  
  Added test 675 to verify different credentials used in two requests done
  over a reused HTTP connection, which previously behaved wrongly.
  
  Fixes #6542
  Closes #6545

- test433: clear some home dir env variables
  
  Follow-up to bd6b54ba1f55b5
  
  ... so that XDG_CONFIG_HOME is the only home dir variable set and thus
  used correctly in the test!
  
  Fixes #6599
  Closes #6600

- RELEASE-NOTES: synced
  
  bumped the version to 7.76.0

- travis: install libgsasl-dev to add that to the builds
  
  Closes #6588

- urldata: don't touch data->set.httpversion at run-time
  
  Rename it to 'httpwant' and make a cloned field in the state struct as
  well for run-time updates.
  
  Also: refuse non-supported HTTP versions. Verified with test 129.
  
  Closes #6585

Viktor Szakats (11 Feb 2021)
- tests: disable .curlrc in more environments
  
  by also setting CURL_HOME and XDG_CONFIG_HOME envvars to the local
  directory.
  
  Reviewed-by: Daniel Stenberg
  Fixes #6595
  Closes #6596

- docs/Makefile.inc: format to be update-friendly
  
  - one source file per line
  - convert tabs to spaces
  - do not align line-continuation backslashes
  - sort source files alphabetically
  
  Reviewed-by: Daniel Stenberg
  Closes #6593

Daniel Stenberg (11 Feb 2021)
- curl: provide libgsasl version and feature info in -V output
  
  Closes #6592

- gsasl: provide CURL_VERSION_GSASL if built-in
  
  To let applications know the feature is available.
  
  Closes #6592

- curl: add --fail-with-body
  
  Prevent both --fail and --fail-with-body on the same command line.
  
  Verify with test 349, 360 and 361.
  
  Closes #6449

- TODO: remove HSTS
  
  Provided now since commit 7385610d0c74

Jay Satiro (10 Feb 2021)
- tests: Fix tests failing due to change in curl --help
  
  Follow-up to parent 3183217 which added add missing <mode> argument to
  --create-file-mode <mode>.
  
  Ref: https://github.com/curl/curl/issues/6590

- tool_help: add missing argument for --create-file-mode
  
  Prior to this change the required argument was not shown in curl --help.
  
  before:
       --create-file-mode File mode for created files
  
  after:
       --create-file-mode <mode> File mode (octal) for created files
  
  Reported-by: ZimCodes@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/6590

- create-file-mode.d: add missing Arg tag
  
  Prior to this change the required argument was not shown.
  
  curl.1 before: --create-file-mode
  curl.1 after: --create-file-mode <mode>
  
  Reported-by: ZimCodes@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/6590

Viktor Szakats (10 Feb 2021)
- gsasl: fix errors/warnings building against libgsasl
  
  - also fix an indentation
  - make Curl_auth_gsasl_token() use CURLcode (by Daniel Stenberg)
  
  Ref: https://github.com/curl/curl/pull/6372#issuecomment-776118711
  Ref: https://github.com/curl/curl/pull/6588
  
  Reviewed-by: Jay Satiro
  Assisted-by: Daniel Stenberg
  Reviewed-by: Simon Josefsson
  Closes #6587

- Makefile.m32: add support for libgsasl dependency
  
  Reviewed-by: Marcel Raad
  Closes #6586

Marcel Raad (10 Feb 2021)
- ngtcp2: clarify calculation precedence
  
  As suggested by Codacy/cppcheck.
  
  Closes https://github.com/curl/curl/pull/6576

- server: remove redundant condition
  
  `end` is always non-null here.
  
  Closes https://github.com/curl/curl/pull/6576

- lib: remove redundant code
  
  Closes https://github.com/curl/curl/pull/6576

- mqttd: remove unused variable
  
  Closes https://github.com/curl/curl/pull/6576

- tool_paramhlp: reduce variable scope
  
  Closes https://github.com/curl/curl/pull/6576

- tests: reduce variable scopes
  
  Closes https://github.com/curl/curl/pull/6576

- lib: reduce variable scopes
  
  Closes https://github.com/curl/curl/pull/6576

- ftp: fix Codacy/cppcheck warning about null pointer arithmetic
  
  Increment `bytes` only if it is non-null.
  
  Closes https://github.com/curl/curl/pull/6576

Daniel Stenberg (9 Feb 2021)
- ngtcp2: adapt to the new recv_datagram callback

- quiche: fix build error: use 'int' for port number
  
  Follow-up to cb2dc1ba8

- ftp: add 'list_only' to the transfer state struct
  
  and rename it from 'ftp_list_only' since it is also used for SSH and
  POP3. The state is updated internally for 'type=D' FTP URLs.
  
  Added test case 1570 to verify.
  
  Closes #6578

- ftp: add 'prefer_ascii' to the transfer state struct
  
  ... and make sure the code never updates 'set.prefer_ascii' as it breaks
  handle reuse which should use the setting as the user specified it.
  
  Added test 1569 to verify: it first makes an FTP transfer with ';type=A'
  and then another without type on the same handle and the second should
  then use binary. Previously, curl failed this.
  
  Closes #6578

- RELEASE-NOTES: synced

- [Jacob Hoffman-Andrews brought this change]

  vtls: initial implementation of rustls backend
  
  This adds a new TLS backend, rustls. It uses the C-to-rustls bindings
  from https://github.com/abetterinternet/crustls.
  
  Rustls is at https://github.com/ctz/rustls/.
  
  There is still a fair bit to be done, like sending CloseNotify on
  connection shutdown, respecting CAPATH, and properly indicating features
  like "supports TLS 1.3 ciphersuites." But it works well enough to make
  requests and receive responses.
  
  Blog post for context:
  https://www.abetterinternet.org/post/memory-safe-curl/
  
  Closes #6350

- [Simon Josefsson brought this change]

  sasl: support SCRAM-SHA-1 and SCRAM-SHA-256 via libgsasl
  
  Closes #6372

Jay Satiro (9 Feb 2021)
- lib: use int type for more port variables
  
  This is a follow-up to 764c6bd. Prior to that change port variables
  were usually type long.
  
  Closes https://github.com/curl/curl/pull/6553

- tool_writeout: refactor write-out and write-out json
  
  - Deduplicate the logic used by write-out and write-out json.
  
  Rather than have separate writeLong, writeString, etc, logic for
  each of write-out and write-out json instead have respective shared
  functions that can output either format and a 'use_json' parameter to
  indicate whether it is json that is output.
  
  This will make it easier to maintain. Rather than have to go through
  two sets of logic now we only have to go through one.
  
  - Support write-out %{errormsg} and %{exitcode} in json.
  
  - Clarify in the doc that %{exitcode} is the exit code of the transfer.
  
  Prior to this change it just said "The numerical exitcode" which
  implies it's the exit code of the tool, and it's not necessarily that.
  
  Closes https://github.com/curl/curl/pull/6544

- lib: drop USE_SOCKETPAIR in favor of CURL_DISABLE_SOCKETPAIR
  
  .. since the former is undocumented and they both do the same thing.
  
  Closes https://github.com/curl/curl/pull/6517

- curl_multibyte: fall back to local code page stat/access on Windows
  
  If libcurl is built with Unicode support for Windows then it is assumed
  the filename string is Unicode in UTF-8 encoding and it is converted to
  UTF-16 to be passed to the wide character version of the respective
  function (eg wstat). However the filename string may actually be in the
  local encoding so, even if it successfully converted to UTF-16, if it
  could not be stat/accessed then try again using the local code page
  version of the function (eg wstat fails try stat).
  
  We already do this with fopen (ie wfopen fails try fopen), so I think it
  makes sense to extend it to stat and access functions.
  
  Closes https://github.com/curl/curl/pull/6514

- [Stephan Szabo brought this change]

  file: Support unicode urls on windows
  
  Closes https://github.com/curl/curl/pull/6501

- [Vincent Torri brought this change]

  cmake: fix import library name for non-MS compiler on Windows
  
  - Use _imp.lib suffix only for Microsoft's compiler (MSVC).
  
  Prior to this change library suffix _imp.lib was used for the import
  library on Windows regardless of compiler.
  
  With this change the other compilers should now use their default
  suffix which should be .dll.a.
  
  This change is motivated by the usage of pkg-config on MSYS2.
  Indeed, when 'pkg-config --libs libcurl' is used, -lcurl is
  passed to ld. The documentation of ld on Windows :
  
  https://sourceware.org/binutils/docs/ld/WIN32.html
  
  lists, in the 'direct linking to a dll' section, the pattern
  of the searched import library, and libcurl_imp.lib is not there.
  
  Closes https://github.com/curl/curl/pull/6225

Daniel Stenberg (9 Feb 2021)
- urldata: move 'followlocation' to UrlState
  
  As this is a state variable it does not belong in UserDefined which is
  used to store values set by the user.
  
  Closes #6582

- [Ikko Ashimine brought this change]

  http_proxy: fix typo in http_proxy.c
  
  settting -> setting
  
  Closes #6583

- [Fabian Keil brought this change]

  tests/server: Bump MAX_TAG_LEN to 200
  
  This is useful for tests containing HTML inside of <data> sections.
  For <img> tags it's not uncommon to be longer than the previous
  limit of 79 bytes.
  
  An example of a previously problem-causing tag is:
  <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-http://www.privoxy.org/images/privoxy.png-by-size" width="88" height="31">
  which is needed for a Privoxy test for the banners-by-size filter.
  
  Previously it caused server failures like:
  12:29:05.786961 ====> Client connect
  12:29:05.787116 accept_connection 3 returned 4
  12:29:05.787194 accept_connection 3 returned 0
  12:29:05.787285 Read 119 bytes
  12:29:05.787345 Process 119 bytes request
  12:29:05.787407 Got request: GET /banners-by-size/9 HTTP/1.1
  12:29:05.787464 Requested test number 9 part 0
  12:29:05.787686 getpart() failed with error: -2
  12:29:05.787744 - request found to be complete (9)
  12:29:05.787912 getpart() failed with error: -2
  12:29:05.788048 Wrote request (119 bytes) input to log/server.input
  12:29:05.788157 Send response test9 section <data>
  12:29:05.788443 getpart() failed with error: -2
  12:29:05.788498 instructed to close connection after server-reply
  12:29:05.788550 ====> Client disconnect 0
  12:29:05.871448 exit_signal_handler: 15
  12:29:05.871714 signalled to die
  12:29:05.872040 ========> IPv4 sws (port 21108 pid: 51758) exits with signal (15)

- [Fabian Keil brought this change]

  tests/badsymbols.pl: when opening '$incdir' fails include it in the error message

- [Fabian Keil brought this change]

  runtests.1: document -o, -P, -L, and -E

- [Fabian Keil brought this change]

  runtests.pl: add %TESTNUMBER variable to make copying tests more convenient

- [Fabian Keil brought this change]

  runtests.pl: add an -o option to change internal variables
  
  runtests.pl has lots of internal variables one might want to
  change in certain situations, but adding a dedicated option
  for every single one of them isn't practical.
  
  Usage:
  ./runtests.pl -o TESTDIR=$privoxy_curl_test_dir -o HOSTIP=10.0.0.1 ...

- [Fabian Keil brought this change]

  runtests.pl: cleanups
  
  - show the summarized test result in the last line of the report
  - do not use $_ after mapping it to a named variable
    Doing that makes the code harder to follow.
  - log the restraints sorted by the number of their occurrences
  - fix language when logging restraints that only occured once
  - let runhttpserver() use $TESTDIR instead of $srcdir
    ... so it works if a non-default $TESTDIR is being used.

- [Fabian Keil brought this change]

  runtests.pl: add an -E option to specify an exclude file
  
  It can contain additional restraints for test numbers,
  keywords and tools.
  
  The idea is to let third parties like the Privoxy project
  distribute an exclude file with their tarballs that specifies
  which curl tests are not expected to work when using Privoxy
  as a proxy, without having to fork the whole curl test suite.
  
  The syntax could be changed to be extendable and maybe
  more closely reflect the "curl test" syntax. Currently
  it's a bunch of lines like these:
  
  test:$TESTNUMBER:Reason why this test with number $TESTNUMBER should be skipped
  keyword:$KEYWORD:Reason why tests whose keywords contain the $KEYWORD should be skipped
  tool:$TOOL:Reason why tests with tools that contain $TOOL should be skipped
  
  To specify multiple $TESTNUMBERs, $KEYWORDs and $TOOLs
  on a single line, split them with commas.

- [Fabian Keil brought this change]

  runtests.pl: add -L parameter to require additional perl libraries
  
  This is useful to change the behaviour of the script without
  having to modify the file itself, for example to use a custom
  compareparts() function that ignores header differences that
  are expected to occur when an external proxy is being used.
  
  Such differences are proxy-specific and thus the modifications
  should be maintained together with the proxy.

- [Fabian Keil brought this change]

  runtests.pl: add a -P option to specify an external proxy
  
  ... that should be used when executing the tests.
  
  The assumption is that the proxy is an HTTP proxy.
  
  This option should be used together with -L to provide
  a customized compareparts() version that knows which
  proxy-specific header differences should be ignored.
  
  This option doesn't work for all test types yet.

- [Fabian Keil brought this change]

  tests: fixup several tests
  
  missing CRs and modified %hostip
  
  lib556/test556: use a real HTTP version to make test reuse more convenient
  
  make sure the weekday in Date headers matches the date
  
  test61: replace stray "^M" (5e 4d) at the end of a cookie with a '^M' (0d)
  
  Gets the test working with external proxies like Privoxy again.
  
  Closes #6463

- ftp: never set data->set.ftp_append outside setopt
  
  Since the set value then risks getting used like that when the easy
  handle is reused by the application.
  
  Also: renamed the struct field from 'ftp_append' to 'remote_append'
  since it is also used for SSH protocols.
  
  Closes #6579

- urldata: remove the 'rtspversion' field
  
  from struct connectdata and the corresponding code in http.c that set
  it. It was never used for anything!
  
  Closes #6581

- CURLOPT_QUOTE.3: clarify that libcurl doesn't parse what's sent
  
  ... so passed in commands may confuse libcurl's knowledge of state.
  
  Reported-by: Bodo Bergmann
  Fixes #6577
  Closes #6580

- [Jacob Hoffman-Andrews brought this change]

  vtls: factor out Curl_ssl_getsock to field of Curl_ssl
  
  Closes #6558

- RELEASE-PROCEDURE: remove old release dates, add new

- docs/SSL-PROBLEMS: enhanced
  
  Elaborate on the intermediate cert issue, and mention that anything
  below TLS 1.2 is generally considered insecure these days.
  
  Closes #6572

- THANKS: remove a Jon Rumsey dupe

Daniel Gustafsson (5 Feb 2021)
- [nimaje brought this change]

  docs: fix FILE example url in --metalink documentation
  
  In a url after <scheme>:// follows the possibly empty authority part
  till the next /, so that url missed a /.
  
  Closes #6573
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Daniel Stenberg (5 Feb 2021)
- hostip: fix build with sync resolver
  
  Reported-by: David Goerger
  Follow-up from 8335c6417
  Fixes #6566
  Closes #6568

- mailmap: Jon Rumsey

- [Jon Rumsey brought this change]

  gskit: correct the gskit_send() prototype
  
  gskit_send() first paramater is a pointer to Curl_easy not connectdata
  struct.
  
  Closes #6570
  Fixes #6569

- urldata: fix build without HTTP and MQTT
  
  Reported-by: Joseph Chen
  Fixes #6562
  Closes #6563

- ftp: avoid SIZE when asking for a TYPE A file
  
  ... as we ignore it anyway because servers don't report the correct size
  and proftpd even blatantly returns a 550.
  
  Updates a set of tests accordingly.
  
  Reported-by: awesomenode on github
  Fixes #6564
  Closes #6565

- pingpong: rename the curl_pp_transfer enum to use PP prefix
  
  Using an FTP prefix for PP provided functionality was misleading.

- RELEASE-NOTES: synced
  
  ... and bump pending version to 7.75.1 (for now)

Jay Satiro (4 Feb 2021)
- build: fix --disable-http-auth
  
  Broken since 215db08 (precedes 7.75.0).
  
  Reported-by: Benbuck Nason
  
  Fixes https://github.com/curl/curl/issues/6567

- build: fix --disable-dateparse
  
  Broken since 215db08 (precedes 7.75.0).
  
  Bug: https://curl.se/mail/lib-2021-02/0008.html
  Reported-by: Firefox OS

Daniel Stenberg (4 Feb 2021)
- [Jon Rumsey brought this change]

  OS400: update for CURLOPT_AWS_SIGV4
  
  chkstrings fails because a new string option that could require codepage
  conversion has been added.
  
  Closes #6561
  Fixes #6560

- BUG-BOUNTY: removed the cooperation mention

Version 7.75.0 (3 Feb 2021)

Daniel Stenberg (3 Feb 2021)
- RELEASE-NOTES: synced

- THANKS: added contributors from 7.75.0

5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
  
  Closes https://github.com/curl/curl/pull/5689

Daniel Stenberg (16 Jul 2020)
- ngtcp2: adjust to recent sockaddr updates
  
  Closes #5690

- page-header: provide protocol details in the curl.1 man page
  
  Add protocol and version specific information about all protocols curl
  supports.
  
  Fixes #5679
  Reported-by: tbugfinder on github
  Closes #5686

Daniel Gustafsson (16 Jul 2020)
- docs: Update a few leftover mentions of DarwinSSL
  
  Commit 76a9c3c4be10b3d4d379d5b23ca76806bbae536a renamed DarwinSSL to the
  more correct/common name Secure Transport, but a few mentions in the docs
  remained.
  
  Closes #5688
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (16 Jul 2020)
- file2memory: use a define instead of -1 unsigned value
  
  ... to use the maximum value for 'size_t' when detecting integer overflow.
  Changed the limit to max/4 as already that seems unreasonably large.
  
  Codacy didn't like the previous approach.
  
  Closes #5683

- CURL_PUSH_ERROROUT: allow the push callback to fail the parent stream
  
  ... by adding support for a new dedicated return code.
  
  Suggested-by: Jonathan Cardoso
  Assisted-by: Erik Johansson
  URL: https://curl.haxx.se/mail/lib-2020-06/0099.html
  Closes #5636

- [Baruch Siach brought this change]

  nss: fix build with disabled proxy support
  
  Avoid reference to fields that do not exist when CURL_DISABLE_PROXY is
  defined.
  
  Closes #5667

- test1139: make it display the difference on test failures

- test1119: verify stdout in the test
  
  So that failures will be displayed in the terminal, as it makes test failures
  visually displayed easier and faster.
  
  Closes #5644

- curl: add %{method} to the -w variables
  
  Gets the CURLINFO_EFFECTIVE_METHOD from libcurl.
  
  Added test 1197 to verify.

- CURLINFO_EFFECTIVE_METHOD: added
  
  Provide the HTTP method that was used on the latest request, which might
  be relevant for users when there was one or more redirects involved.
  
  Closes #5511

Viktor Szakats (14 Jul 2020)
- windows: add unicode to feature list
  
  Reviewed-by: Marcel Raad
  Reviewed-by: Marc Hörsken
  
  Closes #5491

Daniel Stenberg (14 Jul 2020)
- multi: remove two checks always true
  
  Detected by Codacy
  Closes #5676

Marc Hoersken (13 Jul 2020)
- workflows: limit what branches to run CodeQL on
  
  Align CodeQL action with existing CI actions:
  - Update branch filter to avoid duplicate CI runs.
  - Shorten workflow name due to informative job name.
  
  Reviewed-by: Daniel Stenberg
  
  Closes #5660

- appveyor: collect libcurl.dll variants with prefix or suffix
  
  On some platforms libcurl is build with a platform-specific
  prefix and/or a version number suffix.
  
  Assisted-by: Jay Satiro
  
  Closes #5659

Daniel Stenberg (12 Jul 2020)
- [ihsinme brought this change]

  socks: use size_t for size variable
  
  Use the unsigned type (size_t) in the arithmetic of pointers. In this
  context, the signed type (ssize_t) is used unnecessarily.
  
  Authored-by: ihsinme on github
  Closes #5654

- RELEASE-NOTES: synced
  
  ... and bumped to 7.72.0 as the next release version number

- [Gilles Vollant brought this change]

  content_encoding: add zstd decoding support
  
  include zstd curl patch for Makefile.m32 from vszakats
  and include Add CMake support for zstd from Peter Wu
  
  Helped-by: Viktor Szakats
  Helped-by: Peter Wu
  Closes #5453

- asyn.h: remove the Curl_resolver_getsock define
  
   - not used
   - used the wrong number of arguments
   - confused the Codeacy code analyzer
  
  Closes #5647

- [Nicolas Sterchele brought this change]

  configure.ac: Sort features name in summary
  
  - Same as protocols
  
  Closes #5656

- [Matthias Naegler brought this change]

  cmake: fix windows xp build
  
  Reviewed-by: Marcel Raad
  Closes #5662

- ngtcp2: update to modified qlog callback prototype
  
  Closes #5675

- transfer: fix memory-leak with CURLOPT_CURLU in a duped handle
  
  Added test case 674 to reproduce and verify the bug report.
  
  Fixes #5665
  Reported-by: NobodyXu on github
  Closes #5673

- [Baruch Siach brought this change]

  bearssl: fix build with disabled proxy support
  
  Avoid reference to fields that do not exist when CURL_DISABLE_PROXY is
  defined.
  
  Reviewed-by: Nicolas Sterchele
  Closes #5666

- RELEASE-NOTES: synced

Jay Satiro (11 Jul 2020)
- [Carlo Marcelo Arenas Belón brought this change]

  cirrus-ci: upgrade 11-STABLE to 11.4
  
  Meant to be the last of the 11 series and so make sure that all
  other references reflect all 11 versions so they can be retired
  together later.
  
  Closes https://github.com/curl/curl/pull/5668

- [Filip Salomonsson brought this change]

  CURLINFO_CERTINFO.3: fix typo
  
  Closes https://github.com/curl/curl/pull/5655

Daniel Stenberg (4 Jul 2020)
- http2: only do the *done() cleanups for HTTP
  
  Follow-up to ef86daf4d3
  
  Closes #5650
  Fixes #5646

- [Alex Kiernan brought this change]

  gnutls: repair the build with `CURL_DISABLE_PROXY`
  
  `http_proxy`/`proxy_ssl`/`tunnel_proxy` will not be available in `conn`
  if `CURL_DISABLE_PROXY` is enabled.  Repair the build with that
  configuration.
  
  Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
  Closes #5645

Alex Kiernan (3 Jul 2020)
- gnutls: Fetch backend when using proxy
  
  Fixes: 89865c149 ("gnutls: remove the BACKEND define kludge")
  Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>

Daniel Stenberg (3 Jul 2020)
- [Laramie Leavitt brought this change]

  http2: close the http2 connection when no more requests may be sent
  
  Well-behaving HTTP2 servers send two GOAWAY messages. The first
  message is a warning that indicates that the server is going to
  stop accepting streams. The second one actually closes the stream.
  
  nghttp2 reports this state (and the other state of no more stream
  identifiers) via the call nghttp2_session_check_request_allowed().
  In this state the client should not create more streams on the
  session (tcp connection), and in curl this means that the server
  has requested that the connection is closed.
  
  It would be also be possible to put the connclose() call into the
  on_http2_frame_recv() function that triggers on the GOAWAY message.
  
  This fixes a bug seen when the client sees the following sequence of
  frames:
  
  // advisory GOAWAY
  HTTP2 GOAWAY [stream-id = 0, promised-stream-id = -1]
  ... some additional frames
  
  // final GOAWAY
  HTTP2 GOAWAY [stream-id = 0, promised-stream-id = N ]
  
  Before this change, curl will attempt to reuse the connection even
  after the last stream, will encounter this error:
  
  * Found bundle for host localhost: 0x5595f0a694e0 [can multiplex]
  * Re-using existing connection! (#0) with host localhost
  * Connected to localhost (::1) port 10443 (#0)
  * Using Stream ID: 9 (easy handle 0x5595f0a72e30)
  > GET /index.html?5 HTTP/2
  > Host: localhost:10443
  > user-agent: curl/7.68.0
  > accept: */*
  >
  * stopped the pause stream!
  * Connection #0 to host localhost left intact
  curl: (16) Error in the HTTP2 framing layer
  
  This error may posion the connection cache, causing future requests
  which resolve to the same curl connection to go through the same error
  path.
  
  Closes #5643

- ftpserver: don't verify SMTP MAIL FROM names
  
  Rely on tests asking the names to get refused instead - test servers
  should be as dumb as possible. Edited test 914, 955 and 959 accordingly.
  
  Closes #5639

- curl_version_info.3: CURL_VERSION_KERBEROS4 is deprecated
  
  This came up in #5640. It make sense to clarify this in the docs!
  
  Reminded-by: Kamil Dudka
  Closes #5642

Kamil Dudka (3 Jul 2020)
- tool_getparam: make --krb option work again
  
  It was disabled by mistake in commit curl-7_37_1-23-ge38ba4301.
  
  Bug: https://bugzilla.redhat.com/1833193
  Closes #5640

Daniel Stenberg (2 Jul 2020)
- [Jeremy Maitin-Shepard brought this change]

  http2: fix nghttp2_strerror -> nghttp2_http2_strerror in debug messages
  
  Confusingly, nghttp2 has two different error code enums:
  
  - nghttp2_error, to be used with nghttp2_strerror
  - nghttp2_error_code, to be used with nghttp2_http2_strerror
  
  Closes #5641

Marcel Raad (2 Jul 2020)
- url: silence MSVC warning
  
  Since commit f3d501dc678, if proxy support is disabled, MSVC warns:
  url.c : warning C4701: potentially uninitialized local variable
  'hostaddr' used
  url.c : error C4703: potentially uninitialized local pointer variable
  'hostaddr' used
  
  That could actually only happen if both `conn->bits.proxy` and
  `CURL_DISABLE_PROXY` were enabled.
  Initialize it to NULL to silence the warning.
  
  Closes https://github.com/curl/curl/pull/5638

Daniel Stenberg (1 Jul 2020)
- RELEASE-NOTES: synced

Version 7.71.1 (30 Jun 2020)

Daniel Stenberg (30 Jun 2020)
- RELEASE-NOTES: curl 7.71.1

- THANKS: add contributors to 7.71.1

- scripts/copyright.pl: skip .dcignore

- Revert "multi: implement wait using winsock events"
  
  This reverts commit 8bc25c590e530de87595d1bb3577f699eb1309b9.
  
  That commit (from #5397) introduced a regression in 7.71.0.
  
  Reported-by: tmkk on github
  Fixes #5631
  Closes #5632

- TODO: Add flag to specify download directory

- TODO: return code to CURLMOPT_PUSHFUNCTION to fail connection

- cirrus-ci: disable FreeBSD 13 (again)
  
  It has been failing for a good while again. This time we better leave it
  disabled until we have more reason to believe it behaves.
  
  Closes #5628

- ngtcp2: sync with current master
  
  ngtcp2 added two new callbacks
  
  Reported-by: Lucien Zürcher
  Fixes #5624
  Closes #5627

- examples/multithread.c: call curl_global_cleanup()
  
  Reported-by: qiandu2006 on github
  Fixes #5622
  Closes #5623

- vtls: compare cert blob when finding a connection to reuse
  
  Reported-by: Gergely Nagy
  Fixes #5617
  Closes #5619

- RELEASE-NOTES: synced

- terminology: call them null-terminated strings
  
  Updated terminology in docs, comments and phrases to refer to C strings
  as "null-terminated". Done to unify with how most other C oriented docs
  refer of them and what users in general seem to prefer (based on a
  single highly unscientific poll on twitter).
  
  Reported-by: coinhubs on github
  Fixes #5598
  Closes #5608

- http: fix proxy auth with blank password
  
  Regression in 7.71.0
  
  Added test case 346 to verify.
  
  Reported-by: Kristoffer Gleditsch
  Fixes #5613
  Closes #5616

- .dcignore: ignore tests and docs directories
  
  This is a config file for deepcode.ai, a static code analyzer.

Jay Satiro (26 Jun 2020)
- tool_cb_hdr: Fix etag warning output and return code
  
  - Return 'failure' on failure, to follow the existing style.
  
  - Put Warning: and the warning message on the same line.
  
  Ref: https://github.com/curl/curl/issues/5610
  
  Closes https://github.com/curl/curl/pull/5612

Daniel Stenberg (26 Jun 2020)
- CURLOPT_READFUNCTION.3: provide the upload data size up front
  
  Assisted-by: Jay Satiro
  Closes #5607

- test1539: do a HTTP 1.0 POST without a set size (fails)
  
  Attempt to reproduce #5593. Test case 1514 is very similar but uses
  HTTP/1.1 and thus switches to chunked.
  
  Closes #5595

- [Baruch Siach brought this change]

  mbedtls: fix build with disabled proxy support
  
  Don't reference fields that do not exist. Fixes build failure:
  
  vtls/mbedtls.c: In function 'mbed_connect_step1':
  vtls/mbedtls.c:249:54: error: 'struct connectdata' has no member named 'http_proxy'
  
  Closes #5615

- codeql-analysis.yml: fix the 'languages' setting
  
  It needs a 'with:' in front of it.

GitHub (26 Jun 2020)
- [Daniel Stenberg brought this change]

  gtihub: codeql-analysis.yml
  
  enables code security scanning with github actions

Daniel Stenberg (25 Jun 2020)
- tests: verify newline in username and password for HTTP
  
  test 1296 is a simply command line test
  
  test 1910 is a libcurl test including a redirect

- url: allow user + password to contain "control codes" for HTTP(S)
  
  Reported-by: Jon Johnson Jr
  Fixes #5582
  Closes #5592

- escape: make the URL decode able to reject only %00 bytes
  
  ... or all "control codes" or nothing.
  
  Assisted-by: Nicolas Sterchele

- http2: set the correct URL in pushed transfers
  
  ...previously CURLINFO_EFFECTIVE_URL would report the URL of the
  original "mother transfer", not the actually pushed resource.
  
  Reported-by: Jonathan Cardoso Machado
  Fixes #5589
  Closes #5591

Jay Satiro (25 Jun 2020)
- [Javier Blazquez brought this change]

  openssl: Fix compilation on Windows when ngtcp2 is enabled
  
  - Include wincrypt before OpenSSL includes so that the latter can
    properly handle any conflicts between the two.
  
  Closes https://github.com/curl/curl/pull/5606

Daniel Stenberg (25 Jun 2020)
- test543: extended to verify zero length input
  
  As was reported in #5601

- escape: zero length input should return a zero length output
  
  Regression added in 7.71.0.
  
  Fixes #5601
  Reported-by: Kristoffer Gleditsch
  Closes #5602

- Curl_inet_ntop: always check the return code
  
  Reported-by: Siva Sivaraman
  Fixes #5412
  Closes #5597

- sendf: improve the message on client write errors
  
  Replace "Failed writing body (X != Y)" with
  "Failure writing output to destination". Possibly slightly less cryptic.
  
  Reported-by: coinhubs on github
  Fixes #5594
  Closes #5596

- RELEASE-NOTES: synced

- curlver: start working on 7.71.1

- [Denis Baručić brought this change]

  DYNBUF.md: fix a typo: trail => tail
  
  Closes #5599

Version 7.71.0 (23 Jun 2020)

Daniel Stenberg (23 Jun 2020)
- RELEASE-NOTES: curl 7.71.0 release

- THANKS: curl 7.71.0 additions

- url: make sure pushed streams get an allocated download buffer
  
  Follow-up to c4e6968127e876b0
  
  When a new transfer is created, as a resuly of an acknowledged push,
  that transfer needs a download buffer allocated.
  
  Closes #5590

Jay Satiro (22 Jun 2020)
- openssl: Don't ignore CA paths when using Windows CA store
  
  This commit changes the behavior of CURLSSLOPT_NATIVE_CA so that it does
  not override CURLOPT_CAINFO / CURLOPT_CAPATH, or the hardcoded default
  locations. Instead the CA store can now be used at the same time.
  
  The change is due to the impending release. The issue is still being
  discussed. The behavior of CURLSSLOPT_NATIVE_CA is subject to change and
  is now documented as experimental.
  
  Ref: bc052cc (parent commit)
  Ref: https://github.com/curl/curl/issues/5585

- tool_operate: Don't use Windows CA store as a fallback
  
  Background:
  
  148534d added CURLSSLOPT_NATIVE_CA to use the Windows OS certificate
  store in libcurl w/ OpenSSL on Windows. CURLSSLOPT_NATIVE_CA overrides
  CURLOPT_CAINFO if both are set. The curl tool will fall back to
  CURLSSLOPT_NATIVE_CA if it could not find a certificate bundle to set
  via CURLOPT_CAINFO.
  
  Problem:
  
  libcurl may be built with hardcoded paths to a certificate bundle or
  directory, and if CURLSSLOPT_NATIVE_CA is used then those paths are
  ignored.
  
  Solution:
  
  A solution is still being discussed but since there's an impending
  release this commit removes using CURLSSLOPT_NATIVE_CA in the curl tool.
  
  Ref: https://github.com/curl/curl/issues/5585

- openssl: Fix CA fallback logic for OpenSSL 3.0 build
  
  Prior to this change I assume a build error would occur when
  CURL_CA_FALLBACK was used.
  
  Closes https://github.com/curl/curl/pull/5587

Daniel Stenberg (22 Jun 2020)
- copyright: update mismatched copyright years

- test1460: verify that -Ji is not ok

- tool_getparam: -i is not OK if -J is used
  
  Reported-by: sn on hackerone
  Bug: https://curl.haxx.se/docs/CVE-2020-8177.html

- [Peter Wu brought this change]

  CMake: ignore INTERFACE_LIBRARY targets for pkg-config file
  
  Reviewed-by: Marcel Raad
  Fixes #5512
  Closes #5517

- [Valentyn Korniienko brought this change]

  multibyte: Fixed access-> waccess to file for Windows Plarform
  
  Reviewed-by: Marcel Raad
  Closes #5580

- altsvc: bump to h3-29
  
  Closes #5584

- urlglob: treat literal IPv6 addresses with zone IDs as a host name
  
  ... and not as a "glob". Now done by passing the supposed host to the
  URL parser which supposedly will do a better job at identifying "real"
  numerical IPv6 addresses.
  
  Reported-by: puckipedia on github
  Fixes #5576
  Closes #5579

- test1179: verify error message for non-existing cmdline option

- tool_getparam: repair the error message for unknown flag
  
  Follow-up to 9e5669f3880674
  Detected by Coverity CID 1464582 ("Logically dead code")
  
  Closes #5577

- FILEFORMAT: describe verify/stderr

- connect: improve happy eyeballs handling
  
  For QUIC but also for regular TCP when the second family runs out of IPs
  with a failure while the first family is still trying to connect.
  
  Separated the timeout handling for IPv4 and IPv6 connections when they
  both have a number of addresses to iterate over.

- ngtcp2: never call fprintf() in lib code in release version

- ngtcp2: fix happy eyeballs quic connect crash
  
  Reported-by: Peter Wu
  Fixes #5565
  Closes #5568

- select: remove the unused ELAPSED_MS() macro
  
  Closes #5573

Marc Hoersken (17 Jun 2020)
- [rcombs brought this change]

  multi: implement wait using winsock events
  
  This avoids using a pair of TCP ports to provide wakeup functionality
  for every multi instance on Windows, where socketpair() is emulated
  using a TCP socket on loopback which could in turn lead to socket
  resource exhaustion.
  
  Reviewed-by: Gergely Nagy
  Reviewed-by: Marc Hörsken
  
  Closes #5397

Daniel Stenberg (17 Jun 2020)
- manpage: add three missing environment variables
  
  CURL_SSL_BACKEND, QLOGDIR and SSLKEYLOGFILE
  
  Closes #5571

- RELEASE-NOTES: synced

- configure: for wolfSSL, check for the DES func needed for NTLM
  
  Also adds pkg-config support for the wolfSSL detection.

- [Ruurd Beerstra brought this change]

  ntlm: enable NTLM support with wolfSSL
  
  When wolfSSL is built with its OpenSSL API layer, it fetures the same DES*
  functions that OpenSSL has. This change take advantage of that.
  
  Co-authored-by: Daniel Stenberg
  Closes #5556
  Fixes #5548

- http: move header storage to Curl_easy from connectdata
  
  Since the connection can be used by many independent requests (using
  HTTP/2 or HTTP/3), things like user-agent and other transfer-specific
  data MUST NOT be kept connection oriented as it could lead to requests
  getting the wrong string for their requests. This struct data was
  lingering like this due to old HTTP1 legacy thinking where it didn't
  mattered..
  
  Fixes #5566
  Closes #5567

- CODE_REVIEW.md: how to do code reviews in curl
  
  Assisted-by: Daniel Gustafsson
  Assisted-by: Rich Salz
  Assisted-by: Hugo van Kemenade
  Assisted-by: James Fuller
  Assisted-by: Marc Hörsken
  Assisted-by: Jay Satiro
  
  Closes #5555

- altsvc: remove the num field from the altsvc struct
  
  It was superfluous since we have the list.size alredy
  
  Reported-by: Jay Satiro
  Fixes #5553
  Closes #5563

- version.d: expanded and alpha-sorted
  
  Added a few missing features not previously mentioned. Ordered them
  alphabetically.
  
  Closes #5558

- ABI.md: rename to .md and polish the markdown
  
  Closes #5562

- HELP-US: add a section for "smaller tasks"
  
  The point of this section is to meet the CII Best Practices gold level
  critera:
  
   "The project MUST clearly identify small tasks that can be performed by
    new or casual contributors"
  
  Closes #5560

- TODO: retry on the redirected-to URL
  
  Closes #5462

- mailmap: Nicolas Sterchele

- [Nicolas Sterchele brought this change]

  TODO: remove 19.3 section title
  
  Follow-up to ad6416986755e417c66e2c6, which caused wrong formatting on
  curl documentation website
  
  Closes #5561

- [Martin V brought this change]

  test1560: avoid possibly negative association in wording
  
  Closes #5549

- share: don't set the share flag it something fails
  
  When asking for a specific feature to be shared in the share object,
  that bit was previously set unconditionally even if the shared feature
  failed or otherwise wouldn't work.
  
  Closes #5554

- buildconf: remove -print from the find command that removes files
  
  It's just too annoying and unnecessary to get a long list of files shown

- RELEASE-NOTES: synced

- wording: avoid blacklist/whitelist stereotypes
  
  Instead of discussing if there's value or meaning (implied or not) in
  the colors, let's use words without the same possibly negative
  associations.
  
  Closes #5546

Jay Satiro (9 Jun 2020)
- tool_getparam: fix memory leak in parse_args
  
  Prior to this change in Windows Unicode builds most parsed options would
  not be freed.
  
  Found using _CrtDumpMemoryLeaks().
  
  Ref: https://github.com/curl/curl/issues/5545

Daniel Stenberg (8 Jun 2020)
- socks: detect connection close during handshake
  
  The SOCKS4/5 state machines weren't properly terminated when the proxy
  connection got closed, leading to a busy-loop.
  
  Reported-By: zloi-user on github
  Fixes #5532
  Closes #5542

- [James Fuller brought this change]

  multi: add defensive check on data->multi->num_alive
  
  Closes #5540

- Curl_addrinfo: use one malloc instead of three
  
  To reduce the amount of allocations needed for creating a Curl_addrinfo
  struct, make a single larger malloc instead of three separate smaller
  ones.
  
  Closes #5533

- [Alessandro Ghedini brought this change]

  quiche: update SSLKEYLOGFILE support
  
  quiche now requires the application to explicitly set the keylog path
  for each connection, rather than reading the environment variable
  itself.
  
  Closes #5541

- tests: add two simple tests for --login-options
  
  Test 895 and 896 - as a follow-up to a3e972313b
  
  Closes #5539

- ngtcp2: update with recent API changes
  
  Syncs with ngtcp2 commit 7e9a917d386d98 merged June 7 2020.
  
  Assisted-by: Tatsuhiro Tsujikawa
  Closes #5538

- [James Fuller brought this change]

  socks: remove unreachable breaks in socks.c and mime.c
  
  Closes #5537

- tool_cfgable: free login_options at exit
  
  Memory leak
  Reported-by: Geeknik Labs
  Fixes #5535
  Closes #5536

- libssh2: keep sftp errors as 'unsigned long'
  
  Remove weird work-around for storing the SFTP errors as int instead of
  the "unsigned long" that libssh2 actually returns for SFTP errors.
  
  Closes #5534

Marc Hoersken (6 Jun 2020)
- timeouts: move ms timeouts to timediff_t from int and long
  
  Now that all functions in select.[ch] take timediff_t instead
  of the limited int or long, we can remove type conversions
  and related preprocessor checks to silence compiler warnings.
  
  Avoiding conversions from time_t was already done in 842f73de.
  
  Based upon #5262
  Supersedes #5214, #5220 and #5221
  Follow up to #5343 and #5479
  Closes #5490

Daniel Stenberg (6 Jun 2020)
- [François Rigault brought this change]

  openssl: set FLAG_TRUSTED_FIRST unconditionally
  
  On some systems, openssl 1.0.x is still the default, but it has been
  patched to contain all the recent security fixes. As a result of this
  patching, it is possible for macro X509_V_FLAG_NO_ALT_CHAINS to be
  defined, while the previous behavior of openssl to not look at trusted
  chains first, remains.
  
  Fix it: ensure X509_V_FLAG_TRUSTED_FIRST is always set, do not try to
  probe for the behavior of openssl based on the existence ofmacros.
  
  Closes #5530

- server/util: fix logmsg format using curl_off_t argument
  
  ... this caused segfaults on armv7.
  
  Regression added in dd0365d560aea5a (7.70.0)
  
  Reviewed-by: Jay Satiro
  Closes #5529

- RELEASE-NOTES: synced

- [Cherish98 brought this change]

  socks: fix expected length of SOCKS5 reply
  
  Commit 4a4b63d forgot to set the expected SOCKS5 reply length when the
  reply ATYP is X'01'. This resulted in erroneously expecting more bytes
  when the request length is greater than the reply length (e.g., when
  remotely resolving the hostname).
  
  Closes #5527

Marc Hoersken (5 Jun 2020)
- .gitignore: add directory containing the stats repo
  
  Since the new curl/stats repository is designed to be
  checked out into the curl repository working tree as stats/
  it should be on the ignore list to aid in commit staging.

Daniel Stenberg (5 Jun 2020)
- [Adnan Khan brought this change]

  HTTP3.md: clarify cargo build directory
  
  Cargo needs to be called from within the 'quiche' directory.
  
  Closes #5522

- user-agent.d: spell out what happens given a blank argument
  
  Closes #5525

- trailers: switch h1-trailer logic to use dynbuf
  
  In the continued effort to remove "manual" realloc schemes.
  
  Closes #5524

- CURLINFO_ACTIVESOCKET.3: clarify the description
  
  Reported-by: Jay Satiro
  Fixes #5299
  Closes #5520

- mailmap: Don J Olmstead

- configure: only strip first -L from LDFLAGS
  
  In the logic that works out if a given OpenSSL path works, it stripped
  off a possibly leading -L flag using an incorrect sed pattern which
  would remove all instances of -L in the string, including if the path
  itself contained that two-letter sequence!
  
  The same pattern was used and is now updated in multiple places. Now it
  only removes -L if it starts the strings.
  
  Reported-by: Mohamed Osama
  Fixes #5519
  Closes #5521

Peter Wu (4 Jun 2020)
- quiche: advertise draft 28 support
  
  Fix the verbose message while at it, quiche currently supports draft
  27 and draft 28 simultaneously.
  
  Closes #5518

Daniel Stenberg (4 Jun 2020)
- KNOWN_BUGS: RTSP authentication breaks without redirect support
  
  Closes #4750

Jay Satiro (4 Jun 2020)
- projects: Add crypt32.lib to dependencies for all OpenSSL configs
  
  Windows project configurations that use OpenSSL with USE_WIN32_CRYPTO
  need crypt32.
  
  Follow-up to 148534d which added CURLSSLOPT_NATIVE_CA for 7.71.0.
  
  The changes that are in this commit were made by script.
  
  Ref: https://gist.github.com/jay/a1861b50ecce2b32931237180f856e28
  
  Closes https://github.com/curl/curl/pull/5516

Marc Hoersken (3 Jun 2020)
- CI/macos: fix 'is already installed' errors by using bundle
  
  Avoid failing CI builds due to nghttp2 being already installed.
  
  Closes #5513

Daniel Stenberg (3 Jun 2020)
- altsvc: fix 'dsthost' may be used uninitialized in this function

- RELEASE-NOTES: synced

- urldata: let the HTTP method be in the set.* struct
  
  When the method is updated inside libcurl we must still not change the
  method as set by the user as then repeated transfers with that same
  handle might not execute the same operation anymore!
  
  This fixes the libcurl part of #5462
  
  Test 1633 added to verify.
  
  Closes #5499

- hostip: fix the memory-leak introduced in 67d2802
  
  Fixes #5503
  Closes #5504

- test970: make it require proxy support
  
  This test verifies the -w %json output and the test case includes a full
  generated "blob". If there's no proxy support built into libcurl, it
  will return an error for proxy related info variables and they will not
  be included in the json, thus causing a mismatch and this test fails.
  
  Reported-by: Marc Hörsken
  Fixes #5501
  Closes #5502

- [Radoslav Georgiev brought this change]

  examples/http2-down/upload: add error checks
  
  If `index.html` does not exist in the directory from which the example
  is invoked, the fopen(upload, "rb") invocation in `setup` would fail,
  returning NULL.  This value is subsequently passed as the FILE* argument
  of the `fread` invocation in the `read_callback` function, which is the
  actual cause of the crash (apparently `fread` assumes that argument to
  be non-null).
  
  In addition, mitigate some possible crashes of similar origin.
  
  Closes #5463

- [kotoriのねこ brought this change]

  examples/ephiperfifo: turn off interval when setting timerfd
  
  Reported-by: therealhirudo on github
  Fixes #5485
  Closes #5497

- [Saleem Abdulrasool brought this change]

  vtls: repair the build with `CURL_DISABLE_PROXY`
  
  `http_proxy` will not be available in `conndata` if `CURL_DISABLE_PROXY`
  is enabled.  Repair the build with that configuration.
  
  Follow-up to f3d501dc67
  
  Closes #5498

- transfer: remove k->str NULL check
  
  "Null-checking k->str suggests that it may be null, but it has already
  been dereferenced on all paths leading to the check" - and it can't
  legally be NULL at this point. Remove check.
  
  Detected by Coverity CID 1463884
  
  Closes #5495

Marc Hoersken (1 Jun 2020)
- select: always use Sleep in Curl_wait_ms on Win32
  
  Since Win32 almost always will also have USE_WINSOCK,
  we can reduce complexity and always use Sleep there.
  
  Assisted-by: Jay Satiro
  Reviewed-by: Daniel Stenberg
  
  Follow up to #5343
  Closes #5489

Daniel Stenberg (31 May 2020)
- conncache: download buffer needs +1 size for trailing zero
  
  Follow-up to c4e6968127e
  Detected by OSS-Fuzz: https://oss-fuzz.com/testcase-detail/5727799779524608

Marc Hoersken (31 May 2020)
- azure: use matrix strategy to avoid configuration redundancy
  
  This also includes the following changes:
  
  - Use the same timeout for all jobs on Linux (60 minutes)
    and Windows (90 minutes)
  - Use CLI stable apt-get install -y instead of apt install
    which warns about that and run apt-get update first
  - Enable MQTT for Windows msys2 builds instead of
    legacy msys1 builds
  - Add ./configure --prefix parameter to the msys2 builds
  - The MSYSTEM environment variable is now preset inside
    the container images for the msys2 builds
  
  Note: on Azure Pipelines the matrix strategy is basically
  just a simple list of job copies and not really a matrix.
  
  Closes #5468

Daniel Stenberg (30 May 2020)
- build: disable more code/data when built without proxy support
  
  Added build to travis to verify
  
  Closes #5466

- url: alloc the download buffer at transfer start
  
  ... and free it as soon as the transfer is done. It removes the extra
  alloc when a new size is set with setopt() and reduces memory for unused
  easy handles.
  
  In addition: the closure_handle now doesn't use an allocated buffer at
  all but the smallest supported size as a stack based one.
  
  Closes #5472

- timeouts: change millisecond timeouts to timediff_t from time_t
  
  For millisecond timers we like timediff_t better. Also, time_t can be
  unsigned so returning a negative value doesn't work then.
  
  Closes #5479

Marc Hoersken (30 May 2020)
- select: add overflow checks for timeval conversions
  
  Using time_t and suseconds_t if suseconds_t is available,
  long on Windows (maybe others in the future) and int elsewhere.
  
  Also handle case of ULONG_MAX being greater or equal to INFINITE.
  
  Assisted-by: Jay Satiro
  Reviewed-by: Daniel Stenberg
  
  Part of #5343

- select: use timediff_t instead of time_t and int for timeout_ms
  
  Make all functions in select.[ch] take timeout_ms as timediff_t
  which should always be large enough and signed on all platforms
  to take all possible timeout values and avoid type conversions.
  
  Reviewed-by: Jay Satiro
  Reviewed-by: Daniel Stenberg
  
  Replaces #5107 and partially #5262
  Related to #5240 and #5286
  Closes #5343

- unit1604.c: fix implicit conv from 'SANITIZEcode' to 'CURLcode'
  
  GCC 10 warns about this with warning: implicit conversion
    from 'SANITIZEcode' to 'CURLcode' [-Wenum-conversion]
  
  Since 'expected_result' is not really of type 'CURLcode' and
  it is not exposed in any way, we can just use 'SANITIZEcode'.
  
  Reviewed-by: Daniel Stenberg
  Reviewed-by: Marcel Raad
  
  Closes #5476

- tests/libtest: fix undefined reference to 'curlx_win32_fopen'
  
  Since curl_setup.h now makes use of curlx_win32_fopen for Win32
  builds with USE_WIN32_LARGE_FILES or USE_WIN32_SMALL_FILES defined,
  we need to include the relevant files for tests using fopen,
  because the libtest sources are also including curl_setup.h
  
  Reviewed-by: Marcel Raad
  Reviewed-by: Daniel Stenberg
  
  Follow up to #3784 (ffdddb45d9)
  Closes #5475

- appveyor: add non-debug plain autotools-based build
  
  This should enable us to catch linking issues with the
  testsuite early, like the one described/fixed in #5475.
  
  Reviewed-by: Daniel Stenberg
  Reviewed-by: Marcel Raad
  
  Closes #5477

Daniel Stenberg (29 May 2020)
- RELEASE-NOTES: synced

- Revert "buildconf: use find -execdir"
  
  This partially reverts commit c712009838f44211958854de431315586995bc61.
  
  Keep the ares_ files removed but bring back the older way to run find,
  to make it work with busybox's find, as apparently that's being used.
  
  Reported-by: Max Peal
  Fixes #5483
  Closes #5484

- server/sws: fix asan warning on use of uninitialized variable

- libssh2: improved error output for wrong quote syntax
  
  Reported-by: Werner Stolz
  
  Closes #5474

- mk-lib1521: generate code for testing BLOB options as well
  
  Follow-up to cac5374298b3
  
  Closes #5478

- configure: repair the check if argv can be written to
  
  Due to bad escaping of the test code, the test wouldn't build and thus
  result in a negative test result, which would lead to the unconditional
  assumption that overwriting the arguments doesn't work and thus curl
  would never hide credentials given in the command line, even when it
  would otherwise be possible.
  
  Regression from commit 2d4c2152c (7.60.0)
  
  Reported-by: huzunhao on github
  Fixes #5470
  Closes #5471

Peter Wu (28 May 2020)
- CMake: rebuild Makefile.inc.cmake when Makefile.inc changes
  
  Otherwise the build might fail due to missing source files, as
  demonstrated by the recent keylog.c addition on an existing build dir.
  
  Closes #5469

Daniel Stenberg (28 May 2020)
- urldata: fix comments: Curl_done() is called multi_done() now
  
  ... since 575e885db

Peter Wu (27 May 2020)
- ngtcp2: use common key log routine for better thread-safety
  
  Tested with ngtcp2 built against the OpenSSL library. Additionally
  tested with MultiSSL (NSS for TLS and ngtcp2+OpenSSL for QUIC).
  
  The TLS backend (independent of QUIC) may or may not already have opened
  the keylog file before. Therefore Curl_tls_keylog_open is always called
  to ensure the file is open.

- wolfssl: add SSLKEYLOGFILE support
  
  Tested following the same curl and tshark commands as in commit
  "vtls: Extract and simplify key log file handling from OpenSSL" using
  WolfSSL v4.4.0-stable-128-g5179503e8 from git master built with
  `./configure --enable-all --enable-debug CFLAGS=-DHAVE_SECRET_CALLBACK`.
  
  Full support for this feature requires certain wolfSSL build options,
  see "Availability note" in lib/vtls/wolfssl.c for details.
  
  Closes #5327

- vtls: Extract and simplify key log file handling from OpenSSL
  
  Create a set of routines for TLS key log file handling to enable reuse
  with other TLS backends. Simplify the OpenSSL backend as follows:
  
   - Drop the ENABLE_SSLKEYLOGFILE macro as it is unconditionally enabled.
   - Do not perform dynamic memory allocation when preparing a log entry.
     Unless the TLS specifications change we can suffice with a reasonable
     fixed-size buffer.
   - Simplify state tracking when SSL_CTX_set_keylog_callback is
     unavailable. My original sslkeylog.c code included this tracking in
     order to handle multiple calls to SSL_connect and detect new keys
     after renegotiation (via SSL_read/SSL_write). For curl however we can
     be sure that a single master secret eventually becomes available
     after SSL_connect, so a simple flag is sufficient. An alternative to
     the flag is examining SSL_state(), but this seems more complex and is
     not pursued. Capturing keys after server renegotiation was already
     unsupported in curl and remains unsupported.
  
  Tested with curl built against OpenSSL 0.9.8zh, 1.0.2u, and 1.1.1f
  (`SSLKEYLOGFILE=keys.txt curl -vkso /dev/null https://localhost:4433`)
  against an OpenSSL 1.1.1f server configured with:
  
      # Force non-TLSv1.3, use TLSv1.0 since 0.9.8 fails with 1.1 or 1.2
      openssl s_server -www -tls1
      # Likewise, but fail the server handshake.
      openssl s_server -www -tls1 -Verify 2
      # TLS 1.3 test. No need to test the failing server handshake.
      openssl s_server -www -tls1_3
  
  Verify that all secrets (1 for TLS 1.0, 4 for TLS 1.3) are correctly
  written using Wireshark. For the first and third case, expect four
  matches per connection (decrypted Server Finished, Client Finished, HTTP
  Request, HTTP Response). For the second case where the handshake fails,
  expect a decrypted Server Finished only.
  
      tshark -i lo -pf tcp -otls.keylog_file:keys.txt -Tfields \
          -eframe.number -eframe.time -etcp.stream -e_ws.col.Info \
          -dtls.port==4433,http -ohttp.desegment_body:FALSE \
          -Y 'tls.handshake.verify_data or http'
  
  A single connection can easily be identified via the `tcp.stream` field.

Daniel Stenberg (27 May 2020)
- FILEFORMAT: add more features that tests can depend on

- [Michael Kaufmann brought this change]

  transfer: close connection after excess data has been read
  
  For HTTP 1.x, it's a protocol error when the server sends more bytes
  than announced. If this happens, don't reuse the connection, because the
  start position of the next response is undefined.
  
  Closes #5440

- [Estanislau Augé-Pujadas brought this change]

  Revert "ssh: ignore timeouts during disconnect"
  
  This reverts commit f31760e63b4e9ef1eb25f8f211390f8239388515. Shipped in
  curl 7.54.1.
  
  Bug: https://curl.haxx.se/mail/lib-2020-05/0068.html
  Closes #5465

- urldata: connect related booleans live in struct ConnectBits
  
  And remove a few unused booleans!
  
  Closes #5461

- hostip: on macOS avoid DoH when given a numerical IP address
  
  When USE_RESOLVE_ON_IPS is set (defined on macOS), it means that
  numerical IP addresses still need to get "resolved" - but not with DoH.
  
  Reported-by: Viktor Szakats
  Fixes #5454
  Closes #5459

- ngtcp2: cleanup memory when failing to connect
  
  Reported-by: Peter Wu
  Fixes #5447 (the ngtcp2 side of it)
  Closes #5451

- quiche: clean up memory properly when failing to connect
  
  Addresses the quiche side of #5447
  Reported-by: Peter Wu
  Closes #5450

- cleanup: use a single space after equals sign in assignments

- url: accept "any length" credentials for proxy auth
  
  They're only limited to the maximum string input restrictions, not to
  256 bytes.
  
  Added test 1178 to verify
  
  Reported-by: Will Roberts
  Fixes #5448
  Closes #5449

- [Maksim Stsepanenka brought this change]

  test1167: fixes in badsymbols.pl
  
  Closes #5442

- altsvc: fix parser for lines ending with CRLF
  
  Fixed the alt-svc parser to treat a newline as end of line.
  
  The unit tests in test 1654 were done without CRLF and thus didn't quite
  match the real world. Now they use CRLF as well.
  
  Reported-by: Peter Wu
  Assisted-by: Peter Wu
  Assisted-by: Jay Satiro
  Fixes #5445
  Closes #5446

Viktor Szakats (25 May 2020)
- all: fix codespell errors
  
  Reviewed-by: Jay Satiro
  Reviewed-by: Daniel Stenberg
  Closes https://github.com/curl/curl/pull/5452

Peter Wu (25 May 2020)
- ngtcp2: fix build with current ngtcp2 master implementing draft 28
  
  Based on client.cc changes from ngtcp2. Tested with current git master,
  ngtcp2 commit c77d5731ce92, nghttp3 commit 65ff479d4380.
  
  Fixes #5444
  Closes #5443

Daniel Stenberg (25 May 2020)
- RELEASE-NOTES: synced
  
  moved the new setopts up to a "change"

- RELEASE-NOTES: synced

- copyright: updated year ranges out of sync
  
  ... and whitelisted a few more files in the the copyright.pl script.

- [Gilles Vollant brought this change]

  setopt: add CURLOPT_PROXY_ISSUERCERT(_BLOB) for coherency
  
  Closes #5431

- curl: remove -J "informational" written on stdout
  
  curl would previously show "curl: Saved to filename 'name from header'"
  if -J was used and a name was picked from the Content-Disposition
  header. That output could interfer with other stdout output, such as -w.
  
  This commit removes that output line.
  Bug: https://curl.haxx.se/mail/archive-2020-05/0044.html
  Reported-by: Коваленко Анатолий Викторович
  Closes #5435

Peter Wu (22 May 2020)
- travis: simplify quiche build instructions wrt boringssl
  
  quiche builds boringssl as static library, reuse that instead of
  building another shared library.
  
  Closes #5438

- configure: fix pthread check with static boringssl
  
  A shared boringssl/OpenSSL library requires -lcrypto only for linking.
  A static build additionally requires `-ldl -lpthread`. In the latter
  case `-lpthread` is added to LIBS which prevented `-pthread` from being
  added to CFLAGS. Clear LIBS to fix linking failures for libtest tests.

Daniel Stenberg (22 May 2020)
- Revert "sendf: make failf() use the mvsnprintf() return code"
  
  This reverts commit 74623551f306990e70c7c5515b88972005604a74.
  
  Instead mark the function call with (void). Getting the return code and
  using it instead triggered Coverity warning CID 1463596 because
  snprintf() can return a negative value...
  
  Closes #5441

- typecheck-gcc.h: CURLINFO_PRIVATE does not need a 'char *'
  
  Reported-by: Billyzou0741326 on github
  Fixes #5432
  Closes #5436

- tests/server/util.h: add extern to silence compiler warning
  
  Follow-up from a3b0699d5c1

- typecheck-gcc.h: fix the OFF_T check
  
  The option number also needs to be less than CURLOPTTYPE_BLOB.
  
  Follow-up to cac5374298
  Reported-by: Jeroen Ooms
  Bug: https://github.com/curl/curl/pull/5365#issuecomment-631084114

- TODO: --dry-run
  
  Closes #5426

- TODO: Ratelimit or wait between serial requests
  
  Closes #5406

- tool_paramhlp: fixup C89 mistake
  
  Follow-up to c5f0a9db22.

- [Siva Sivaraman brought this change]

  tool_paramhlp: fixed potentially uninitialized strtol() variable
  
  Seems highly unlikely to actually be possible, but better safe than
  sorry.
  
  Closes #5417

- [Siva Sivaraman brought this change]

  tool_operate: fixed potentially uninitialized variables
  
  ... in curl_easy_getinfo() calls. They're harmless but clearing the
  variables makes the code safer and comforts the reader.
  
  Closes #5416

- sha256: move assign to the declaration line
  
  Follow-up to fae30656. Should've been squashed with that commit...

- [Siva Sivaraman brought this change]

  sha256: fixed potentially uninitialized variable
  
  Closes #5414

- sendf: make failf() use the mvsnprintf() return code
  
  ... and avoid a strlen() call. Fixes a MonocleAI warning.
  
  Reported-by: MonocleAI
  Fixes #5413
  Closes #5420

- hostip: make Curl_printable_address not return anything
  
  It was not used much anyway and instead we let it store a blank buffer
  in case of failure.
  
  Reported-by: MonocleAI
  Fixes #5411
  Closes #5418

- ftp: mark return-ignoring calls to Curl_GetFTPResponse with (void)
  
  They're done on purpose, make that visible in the code.
  Reported-by: MonocleAI
  Fixes #5412
  Closes #549

- TODO: forbid TLS post-handshake auth and do TLS record padding
  
  Closes #5396
  Closes #5398

- RELEASE-NOTES: synced

- dynbuf: return NULL when there's no buffer length
  
  ... as returning a "" is not a good idea as the string is supposed to be
  allocated and returning a const string will cause issues.
  
  Reported-by: Brian Carpenter
  Follow-up to ed35d6590e72c
  Closes #5405

Peter Wu (16 May 2020)
- travis: upgrade to bionic, clang-9, improve readability
  
  Changes, partially to reduce build failures from external dependencies:
   - Upgrade Ubuntu and drop unnecessary third-party repos.
   - Properly clone apt config to ensure retries.
   - Upgrade to clang-9 from the standard repos.
   - Use Ubuntu 20.04 focal for the libssh build, use of ssh_get_publickey
     fails on -Werror=deprecated-declarations in Ubuntu 18.04. Do not use
     focal everywhere yet since Travis CI has not documented this option.
     In focal, python-impacket (Py2.7) has been removed, leaving only
     python3-impacket. Since it is only needed for SMB tests and not SSH,
     skip it for the libssh job since it might need more work.
   - apt: Remove gcc-8 and libstdc++-8-dev, already installed via g++-8.
  
  Non-functional cleanups:
   - Simplify test matrix, drop redundant os and compiler keys.
   - Deprecation fixes: remove sudo, rename matrix -> jobs.
   - Every job has an 'env' key, put this key first in a list item.
  
  Closes #5370

- travis: whitespace-only changes for consistency
  
  Automatically apply a consistent indentation with:
  
      python3 -c 'from ruamel.yaml import YAML;y=YAML();d=y.load(open(".travis.yml"));y.width=500;y.dump(d,open(".travis.yml.new","w"))'
  
  followed by manually re-indenting three comments.
  
  Closes #5370

- CMake: add libssh build support
  
  Closes #5372

Daniel Stenberg (15 May 2020)
- KNOWN_BUGS: wolfssh: publickey auth doesn't work
  
  Closes #4820

- KNOWN_BUGS: OS400 port requires deprecated IBM library
  
  Closes #5176

- [Vyron Tsingaras brought this change]

  http2: keep trying to send pending frames after req.upload_done
  
  Fixes #1410
  Closes #5401

- [Gilles Vollant brought this change]

  setopt: support certificate options in memory with struct curl_blob
  
  This change introduces a generic way to provide binary data in setopt
  options, called BLOBs.
  
  This change introduces these new setopts:
  
  CURLOPT_ISSUERCERT_BLOB, CURLOPT_PROXY_SSLCERT_BLOB,
  CURLOPT_PROXY_SSLKEY_BLOB, CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB.
  
  Reviewed-by: Daniel Stenberg
  Closes #5357

- source cleanup: remove all custom typedef structs
  
   - Stick to a single unified way to use structs
   - Make checksrc complain on 'typedef struct {'
   - Allow them in tests, public headers and examples
  
   - Let MD4_CTX, MD5_CTX, and SHA256_CTX typedefs remain as they actually
     typedef different types/structs depending on build conditions.
  
  Closes #5338

- travis: remove the .checksrc fiddling

- ftp: make domore_getsock() return the secondary socket properly
  
  Previously, after PASV and immediately after the data connection has
  connected, the function would only return the control socket to wait for
  which then made the data connection simply timeout and not get polled
  correctly. This become obvious when running test 1631 and 1632 event-
  based.

- test1632: verify FTP through HTTPS-proxy with connection re-use

- test1631: verify FTP download through HTTPS-proxy

- sws: as last resort, get test number from server cmd file
  
  If it can't be found in the request. Also support --cmdfile to set it to
  a custom file name.
  
  runtests.pl always writes this file with the test number in it since a
  while back.

- ftp: shut down the secondary connection properly when SSL is used
  
  Reported-by: Neal Poole
  Fixes #5340
  Closes #5385

Marcel Raad (14 May 2020)
- KNOWN_BUGS: adapt 5.5 to recent changes
  
  It only applies to non-Unicode builds now.
  Also merge 5.10 into it as it's effectively a duplicate.
  
  Closes https://github.com/curl/curl/pull/3784

- curl_setup: support Unicode functions to open files on Windows
  
  Use them only if `_UNICODE` is defined, in which case command-line
  arguments have been converted to UTF-8.
  
  Closes https://github.com/curl/curl/pull/3784

- tool: support UTF-16 command line on Windows
  
  - use `wmain` instead of `main` when `_UNICODE` is defined [0]
  - define `argv_item_t` as `wchar_t *` in this case
  - use the curl_multibyte gear to convert the command-line arguments to
    UTF-8
  
  This makes it possible to pass parameters with characters outside of
  the current locale on Windows, which is required for some tests, e.g.
  the IDN tests. Out of the box, this currently only works with the
  Visual Studio project files, which default to Unicode, and winbuild
  with the `ENABLE_UNICODE` option.
  
  [0] https://devblogs.microsoft.com/oldnewthing/?p=40643
  
  Ref: https://github.com/curl/curl/issues/3747
  Closes https://github.com/curl/curl/pull/3784

- curl_multibyte: add to curlx
  
  This will also be needed in the tool and tests.
  
  Ref: https://github.com/curl/curl/pull/3758#issuecomment-482197512
  Closes https://github.com/curl/curl/pull/3784

Daniel Stenberg (14 May 2020)
- url: make the updated credentials URL-encoded in the URL
  
  Found-by: Gregory Jefferis
  Reported-by: Jeroen Ooms
  Added test 1168 to verify. Bug spotted when doing a redirect.
  Bug: https://github.com/jeroen/curl/issues/224
  Closes #5400

- tests: add https-proxy support to the test suite
  
  Initial test 1630 added with basic HTTPS-proxy use. HTTPS-proxy is like
  HTTP proxy but with a full TLS connection to the proxy.
  
  Closes #5399

- mailmap: James Fuller

- [Major_Tom brought this change]

  vauth/cleartext: fix theoretical integer overflow
  
  Fix theoretical integer overflow in Curl_auth_create_plain_message.
  
  The security impact of the overflow was discussed on hackerone. We
  agreed this is more of a theoretical vulnerability, as the integer
  overflow would only be triggerable on systems using 32-bits size_t with
  over 4GB of available memory space for the process.
  
  Closes #5391

Jay Satiro (13 May 2020)
- curl.1: Quote globbed URLs
  
  - Quote the globbing example URLs that contain characters [] {} since
    otherwise they may be interpreted as shell metacharacters.
  
  Bug: https://github.com/curl/curl/issues/5388
  Reported-by: John Simpson
  
  Closes https://github.com/curl/curl/pull/5394

Daniel Stenberg (14 May 2020)
- checksrc: enhance the ASTERISKSPACE and update code accordingly
  
  Fine: "struct hello *world"
  
  Not fine: "struct hello* world" (and variations)
  
  Closes #5386

- docs/options-in-versions: which version added each cmdline option
  
  Added test 971 to verify that the list is in sync with the files in
  cmdline-opts. The check also verifies that .d-files that uses Added:
  specify the same version number as the options-in-versions file does.
  
  Closes #5381

- docs: unify protocol lists
  
  We boast support for 25 transfer protocols. Make sure the lists are
  consistent
  
  Closes #5384







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
7656
7657
7658
7659
7660
7661
7662


















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































  
  Closes https://github.com/curl/curl/pull/5689

Daniel Stenberg (16 Jul 2020)
- ngtcp2: adjust to recent sockaddr updates
  
  Closes #5690


















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Changes to jni/curl/CMake/Platforms/WindowsCache.cmake.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
    set(HAVE_STRICMP 1)
    set(HAVE_STRCMPI 1)
    set(HAVE_GETHOSTBYADDR 1)
    set(HAVE_GETTIMEOFDAY 0)
    set(HAVE_INET_ADDR 1)
    set(HAVE_INET_NTOA 1)
    set(HAVE_INET_NTOA_R 0)
    set(HAVE_TCGETATTR 0)
    set(HAVE_TCSETATTR 0)
    set(HAVE_PERROR 1)
    set(HAVE_CLOSESOCKET 1)
    set(HAVE_SETVBUF 0)
    set(HAVE_SIGSETJMP 0)
    set(HAVE_GETPASS_R 0)
    set(HAVE_STRLCAT 0)
    set(HAVE_GETPWUID 0)







<
<







85
86
87
88
89
90
91


92
93
94
95
96
97
98
    set(HAVE_STRICMP 1)
    set(HAVE_STRCMPI 1)
    set(HAVE_GETHOSTBYADDR 1)
    set(HAVE_GETTIMEOFDAY 0)
    set(HAVE_INET_ADDR 1)
    set(HAVE_INET_NTOA 1)
    set(HAVE_INET_NTOA_R 0)


    set(HAVE_PERROR 1)
    set(HAVE_CLOSESOCKET 1)
    set(HAVE_SETVBUF 0)
    set(HAVE_SIGSETJMP 0)
    set(HAVE_GETPASS_R 0)
    set(HAVE_STRLCAT 0)
    set(HAVE_GETPWUID 0)
Changes to jni/curl/CMakeLists.txt.
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
endif()

check_function_exists(gethostname HAVE_GETHOSTNAME)

if(WIN32)
  check_library_exists_concat("ws2_32" getch        HAVE_LIBWS2_32)
  check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)
  list(APPEND CURL_LIBS "advapi32")
endif()

# check SSL libraries
# TODO support GnuTLS
if(CMAKE_USE_WINSSL)
  message(FATAL_ERROR "The cmake option CMAKE_USE_WINSSL was renamed to CMAKE_USE_SCHANNEL.")
endif()







<







306
307
308
309
310
311
312

313
314
315
316
317
318
319
endif()

check_function_exists(gethostname HAVE_GETHOSTNAME)

if(WIN32)
  check_library_exists_concat("ws2_32" getch        HAVE_LIBWS2_32)
  check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)

endif()

# check SSL libraries
# TODO support GnuTLS
if(CMAKE_USE_WINSSL)
  message(FATAL_ERROR "The cmake option CMAKE_USE_WINSSL was renamed to CMAKE_USE_SCHANNEL.")
endif()
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
  set(CURL_WITH_MULTI_SSL ON)
endif()

if(CMAKE_USE_SCHANNEL)
  set(SSL_ENABLED ON)
  set(USE_SCHANNEL ON) # Windows native SSL/TLS support
  set(USE_WINDOWS_SSPI ON) # CMAKE_USE_SCHANNEL implies CURL_WINDOWS_SSPI
  list(APPEND CURL_LIBS "crypt32")
endif()
if(CURL_WINDOWS_SSPI)
  set(USE_WINDOWS_SSPI ON)
  set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DSECURITY_WIN32")
endif()

if(CMAKE_USE_DARWINSSL)







<







351
352
353
354
355
356
357

358
359
360
361
362
363
364
  set(CURL_WITH_MULTI_SSL ON)
endif()

if(CMAKE_USE_SCHANNEL)
  set(SSL_ENABLED ON)
  set(USE_SCHANNEL ON) # Windows native SSL/TLS support
  set(USE_WINDOWS_SSPI ON) # CMAKE_USE_SCHANNEL implies CURL_WINDOWS_SSPI

endif()
if(CURL_WINDOWS_SSPI)
  set(USE_WINDOWS_SSPI ON)
  set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DSECURITY_WIN32")
endif()

if(CMAKE_USE_DARWINSSL)
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
  cmake_push_check_state()
  set(CMAKE_REQUIRED_INCLUDES   "${QUICHE_INCLUDE_DIRS}")
  set(CMAKE_REQUIRED_LIBRARIES  "${QUICHE_LIBRARIES}")
  check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
  cmake_pop_check_state()
endif()

if(WIN32)
  set(USE_WIN32_CRYPTO ON)
endif()

if(NOT CURL_DISABLE_LDAP)
  if(WIN32)
    option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON)
    if(USE_WIN32_LDAP)
      check_library_exists_concat("wldap32" cldap_open HAVE_WLDAP32)
      if(NOT HAVE_WLDAP32)
        set(USE_WIN32_LDAP OFF)







<
<
<
<







499
500
501
502
503
504
505




506
507
508
509
510
511
512
  cmake_push_check_state()
  set(CMAKE_REQUIRED_INCLUDES   "${QUICHE_INCLUDE_DIRS}")
  set(CMAKE_REQUIRED_LIBRARIES  "${QUICHE_LIBRARIES}")
  check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
  cmake_pop_check_state()
endif()





if(NOT CURL_DISABLE_LDAP)
  if(WIN32)
    option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON)
    if(USE_WIN32_LDAP)
      check_library_exists_concat("wldap32" cldap_open HAVE_WLDAP32)
      if(NOT HAVE_WLDAP32)
        set(USE_WIN32_LDAP OFF)
620
621
622
623
624
625
626








627
628
629
630
631
632
633

# Check for idn
option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
set(HAVE_LIBIDN2 OFF)
if(USE_LIBIDN2)
  check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
endif()









# Check for symbol dlopen (same as HAVE_LIBDL)
check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)

set(HAVE_LIBZ OFF)
set(HAVE_ZLIB_H OFF)
set(USE_ZLIB OFF)







>
>
>
>
>
>
>
>







614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635

# Check for idn
option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
set(HAVE_LIBIDN2 OFF)
if(USE_LIBIDN2)
  check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
endif()

if(WIN32)
  option(USE_WIN32_IDN "Use WinIDN for IDN support" OFF)
  if(USE_WIN32_IDN)
    list(APPEND CURL_LIBS "Normaliz")
    set(WANT_IDN_PROTOTYPES ON)
  endif()
endif()

# Check for symbol dlopen (same as HAVE_LIBDL)
check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)

set(HAVE_LIBZ OFF)
set(HAVE_ZLIB_H OFF)
set(USE_ZLIB OFF)
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886

# Check for header files
if(NOT UNIX)
  check_include_file_concat("windows.h"      HAVE_WINDOWS_H)
  check_include_file_concat("winsock.h"      HAVE_WINSOCK_H)
  check_include_file_concat("ws2tcpip.h"     HAVE_WS2TCPIP_H)
  check_include_file_concat("winsock2.h"     HAVE_WINSOCK2_H)
  if(NOT CURL_WINDOWS_SSPI AND USE_OPENSSL)
    set(CURL_LIBS ${CURL_LIBS} "crypt32")
  endif()
endif()

check_include_file_concat("stdio.h"          HAVE_STDIO_H)
check_include_file_concat("inttypes.h"       HAVE_INTTYPES_H)
check_include_file_concat("sys/filio.h"      HAVE_SYS_FILIO_H)
check_include_file_concat("sys/ioctl.h"      HAVE_SYS_IOCTL_H)
check_include_file_concat("sys/param.h"      HAVE_SYS_PARAM_H)







|
<
<







872
873
874
875
876
877
878
879


880
881
882
883
884
885
886

# Check for header files
if(NOT UNIX)
  check_include_file_concat("windows.h"      HAVE_WINDOWS_H)
  check_include_file_concat("winsock.h"      HAVE_WINSOCK_H)
  check_include_file_concat("ws2tcpip.h"     HAVE_WS2TCPIP_H)
  check_include_file_concat("winsock2.h"     HAVE_WINSOCK2_H)
  check_include_file_concat("wincrypt.h"     HAVE_WINCRYPT_H)


endif()

check_include_file_concat("stdio.h"          HAVE_STDIO_H)
check_include_file_concat("inttypes.h"       HAVE_INTTYPES_H)
check_include_file_concat("sys/filio.h"      HAVE_SYS_FILIO_H)
check_include_file_concat("sys/ioctl.h"      HAVE_SYS_IOCTL_H)
check_include_file_concat("sys/param.h"      HAVE_SYS_PARAM_H)
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
endif()
check_symbol_exists(gethostbyaddr "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR)
check_symbol_exists(gethostbyaddr_r "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR_R)
check_symbol_exists(gettimeofday  "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
check_symbol_exists(inet_addr     "${CURL_INCLUDES}" HAVE_INET_ADDR)
check_symbol_exists(inet_ntoa     "${CURL_INCLUDES}" HAVE_INET_NTOA)
check_symbol_exists(inet_ntoa_r   "${CURL_INCLUDES}" HAVE_INET_NTOA_R)
check_symbol_exists(tcsetattr     "${CURL_INCLUDES}" HAVE_TCSETATTR)
check_symbol_exists(tcgetattr     "${CURL_INCLUDES}" HAVE_TCGETATTR)
check_symbol_exists(perror        "${CURL_INCLUDES}" HAVE_PERROR)
check_symbol_exists(closesocket   "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
check_symbol_exists(setvbuf       "${CURL_INCLUDES}" HAVE_SETVBUF)
check_symbol_exists(sigsetjmp     "${CURL_INCLUDES}" HAVE_SIGSETJMP)
check_symbol_exists(getpass_r     "${CURL_INCLUDES}" HAVE_GETPASS_R)
check_symbol_exists(strlcat       "${CURL_INCLUDES}" HAVE_STRLCAT)
check_symbol_exists(getpwuid      "${CURL_INCLUDES}" HAVE_GETPWUID)







<
<







1001
1002
1003
1004
1005
1006
1007


1008
1009
1010
1011
1012
1013
1014
endif()
check_symbol_exists(gethostbyaddr "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR)
check_symbol_exists(gethostbyaddr_r "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR_R)
check_symbol_exists(gettimeofday  "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
check_symbol_exists(inet_addr     "${CURL_INCLUDES}" HAVE_INET_ADDR)
check_symbol_exists(inet_ntoa     "${CURL_INCLUDES}" HAVE_INET_NTOA)
check_symbol_exists(inet_ntoa_r   "${CURL_INCLUDES}" HAVE_INET_NTOA_R)


check_symbol_exists(perror        "${CURL_INCLUDES}" HAVE_PERROR)
check_symbol_exists(closesocket   "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
check_symbol_exists(setvbuf       "${CURL_INCLUDES}" HAVE_SETVBUF)
check_symbol_exists(sigsetjmp     "${CURL_INCLUDES}" HAVE_SIGSETJMP)
check_symbol_exists(getpass_r     "${CURL_INCLUDES}" HAVE_GETPASS_R)
check_symbol_exists(strlcat       "${CURL_INCLUDES}" HAVE_STRLCAT)
check_symbol_exists(getpwuid      "${CURL_INCLUDES}" HAVE_GETPWUID)
1250
1251
1252
1253
1254
1255
1256













1257
1258
1259
1260
1261
1262
1263

# For Windows, all compilers used by CMake should support large files
if(WIN32)
  set(USE_WIN32_LARGE_FILES ON)

  # Use the manifest embedded in the Windows Resource
  set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DCURL_EMBED_MANIFEST")













endif()

if(MSVC)
  # Disable default manifest added by CMake
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")

  add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)







>
>
>
>
>
>
>
>
>
>
>
>
>







1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274

# For Windows, all compilers used by CMake should support large files
if(WIN32)
  set(USE_WIN32_LARGE_FILES ON)

  # Use the manifest embedded in the Windows Resource
  set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DCURL_EMBED_MANIFEST")

  # Check if crypto functions in wincrypt.h are actually available
  if(HAVE_WINCRYPT_H)
    check_symbol_exists(CryptAcquireContext "${CURL_INCLUDES}" USE_WINCRYPT)
  endif()
  if(USE_WINCRYPT)
    set(USE_WIN32_CRYPTO ON)
  endif()

  # Link required libraries for USE_WIN32_CRYPTO or USE_SCHANNEL
  if(USE_WIN32_CRYPTO OR USE_SCHANNEL)
    list(APPEND CURL_LIBS "advapi32" "crypt32")
  endif()
endif()

if(MSVC)
  # Disable default manifest added by CMake
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")

  add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353







1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377

1378
1379


1380
1381
1382
1383
1384
1385
1386
1387
cmake_dependent_option(BUILD_TESTING "Build tests"
  ON "PERL_FOUND;NOT CURL_DISABLE_TESTS"
  OFF)
if(BUILD_TESTING)
  add_subdirectory(tests)
endif()

# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_DARWINSSL OR USE_MBEDTLS OR USE_WIN32_CRYPTO))
  set(use_ntlm ON)
else()
  set(use_ntlm OFF)
endif()

# Helper to populate a list (_items) with a label when conditions (the remaining
# args) are satisfied
macro(_add_if label)
  # needs to be a macro to allow this indirection
  if(${ARGN})
    set(_items ${_items} "${label}")
  endif()
endmacro()








# Clear list and try to detect available features
set(_items)
_add_if("SSL"           SSL_ENABLED)
_add_if("IPv6"          ENABLE_IPV6)
_add_if("unixsockets"   USE_UNIX_SOCKETS)
_add_if("libz"          HAVE_LIBZ)
_add_if("brotli"        HAVE_BROTLI)
_add_if("zstd"          HAVE_ZSTD)
_add_if("AsynchDNS"     USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
_add_if("IDN"           HAVE_LIBIDN2)
_add_if("Largefile"     (CURL_SIZEOF_CURL_OFF_T GREATER 4) AND
                        ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES))
# TODO SSP1 (Schannel) check is missing
_add_if("SSPI"          USE_WINDOWS_SSPI)
_add_if("GSS-API"       HAVE_GSSAPI)
_add_if("alt-svc"       NOT CURL_DISABLE_ALTSVC)
# TODO SSP1 missing for SPNEGO
_add_if("SPNEGO"        NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
_add_if("Kerberos"      NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS

_add_if("NTLM"        use_ntlm OR USE_WINDOWS_SSPI)
# TODO missing option (autoconf: --enable-ntlm-wb)


_add_if("NTLM_WB"     use_ntlm AND NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
_add_if("TLS-SRP"       USE_TLS_SRP)
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
_add_if("HTTP2"         USE_NGHTTP2)
_add_if("HTTP3"         USE_NGTCP2 OR USE_QUICHE)
_add_if("MultiSSL"      CURL_WITH_MULTI_SSL)
_add_if("HTTPS-proxy"   SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS OR USE_NSS))







<
<
<
<
<
<
<
<








>
>
>
>
>
>
>










|
|












>
|

>
>
|







1342
1343
1344
1345
1346
1347
1348








1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
cmake_dependent_option(BUILD_TESTING "Build tests"
  ON "PERL_FOUND;NOT CURL_DISABLE_TESTS"
  OFF)
if(BUILD_TESTING)
  add_subdirectory(tests)
endif()









# Helper to populate a list (_items) with a label when conditions (the remaining
# args) are satisfied
macro(_add_if label)
  # needs to be a macro to allow this indirection
  if(${ARGN})
    set(_items ${_items} "${label}")
  endif()
endmacro()

# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_MBEDTLS OR
                                     USE_DARWINSSL OR USE_WIN32_CRYPTO))
  set(use_curl_ntlm_core ON)
endif()

# Clear list and try to detect available features
set(_items)
_add_if("SSL"           SSL_ENABLED)
_add_if("IPv6"          ENABLE_IPV6)
_add_if("unixsockets"   USE_UNIX_SOCKETS)
_add_if("libz"          HAVE_LIBZ)
_add_if("brotli"        HAVE_BROTLI)
_add_if("zstd"          HAVE_ZSTD)
_add_if("AsynchDNS"     USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
_add_if("IDN"           HAVE_LIBIDN2 OR USE_WIN32_IDN)
_add_if("Largefile"     (SIZEOF_CURL_OFF_T GREATER 4) AND
                        ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES))
# TODO SSP1 (Schannel) check is missing
_add_if("SSPI"          USE_WINDOWS_SSPI)
_add_if("GSS-API"       HAVE_GSSAPI)
_add_if("alt-svc"       NOT CURL_DISABLE_ALTSVC)
# TODO SSP1 missing for SPNEGO
_add_if("SPNEGO"        NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
_add_if("Kerberos"      NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
_add_if("NTLM"          NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (use_curl_ntlm_core OR USE_WINDOWS_SSPI))
# TODO missing option (autoconf: --enable-ntlm-wb)
_add_if("NTLM_WB"       NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND
                        NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
_add_if("TLS-SRP"       USE_TLS_SRP)
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
_add_if("HTTP2"         USE_NGHTTP2)
_add_if("HTTP3"         USE_NGTCP2 OR USE_QUICHE)
_add_if("MultiSSL"      CURL_WITH_MULTI_SSL)
_add_if("HTTPS-proxy"   SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS OR USE_NSS))
1407
1408
1409
1410
1411
1412
1413
1414

1415

1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
_add_if("TFTP"          NOT CURL_DISABLE_TFTP)
_add_if("GOPHER"        NOT CURL_DISABLE_GOPHER)
_add_if("GOPHERS"       NOT CURL_DISABLE_GOPHER AND SSL_ENABLED)
_add_if("POP3"          NOT CURL_DISABLE_POP3)
_add_if("POP3S"         NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
_add_if("IMAP"          NOT CURL_DISABLE_IMAP)
_add_if("IMAPS"         NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
_add_if("SMB"           NOT CURL_DISABLE_SMB AND use_ntlm)

_add_if("SMBS"          NOT CURL_DISABLE_SMB AND SSL_ENABLED AND use_ntlm)

_add_if("SMTP"          NOT CURL_DISABLE_SMTP)
_add_if("SMTPS"         NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
_add_if("SCP"           USE_LIBSSH2 OR USE_LIBSSH)
_add_if("SFTP"          USE_LIBSSH2 OR USE_LIBSSH)
_add_if("RTSP"          NOT CURL_DISABLE_RTSP)
_add_if("RTMP"          USE_LIBRTMP)
_add_if("MQTT"          NOT CURL_DISABLE_MQTT)
if(_items)
  list(SORT _items)
endif()
string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}")

# Clear list and collect SSL backends
set(_items)
_add_if("Schannel"         SSL_ENABLED AND USE_WINDOWS_SSPI)
_add_if("OpenSSL"          SSL_ENABLED AND USE_OPENSSL)
_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
_add_if("mbedTLS"          SSL_ENABLED AND USE_MBEDTLS)
_add_if("BearSSL"          SSL_ENABLED AND USE_BEARSSL)
_add_if("NSS"              SSL_ENABLED AND USE_NSS)
_add_if("wolfSSL"          SSL_ENABLED AND USE_WOLFSSL)
if(_items)







|
>
|
>















|







1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
_add_if("TFTP"          NOT CURL_DISABLE_TFTP)
_add_if("GOPHER"        NOT CURL_DISABLE_GOPHER)
_add_if("GOPHERS"       NOT CURL_DISABLE_GOPHER AND SSL_ENABLED)
_add_if("POP3"          NOT CURL_DISABLE_POP3)
_add_if("POP3S"         NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
_add_if("IMAP"          NOT CURL_DISABLE_IMAP)
_add_if("IMAPS"         NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
_add_if("SMB"           NOT CURL_DISABLE_SMB AND
                        use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
_add_if("SMBS"          NOT CURL_DISABLE_SMB AND SSL_ENABLED AND
                        use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
_add_if("SMTP"          NOT CURL_DISABLE_SMTP)
_add_if("SMTPS"         NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
_add_if("SCP"           USE_LIBSSH2 OR USE_LIBSSH)
_add_if("SFTP"          USE_LIBSSH2 OR USE_LIBSSH)
_add_if("RTSP"          NOT CURL_DISABLE_RTSP)
_add_if("RTMP"          USE_LIBRTMP)
_add_if("MQTT"          NOT CURL_DISABLE_MQTT)
if(_items)
  list(SORT _items)
endif()
string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}")

# Clear list and collect SSL backends
set(_items)
_add_if("Schannel"         SSL_ENABLED AND USE_SCHANNEL)
_add_if("OpenSSL"          SSL_ENABLED AND USE_OPENSSL)
_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
_add_if("mbedTLS"          SSL_ENABLED AND USE_MBEDTLS)
_add_if("BearSSL"          SSL_ENABLED AND USE_BEARSSL)
_add_if("NSS"              SSL_ENABLED AND USE_NSS)
_add_if("wolfSSL"          SSL_ENABLED AND USE_WOLFSSL)
if(_items)
Changes to jni/curl/Makefile.in.
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473

474
475
476



477
478
479
480
481
482
483
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







452
453
454
455
456
457
458

459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
702
703
704
705
706
707
708

709
710
711
712
713
714
715
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcurl.pc
LIB_VAUTH_CFILES = \
  vauth/cleartext.c     \
  vauth/cram.c          \
  vauth/digest.c        \
  vauth/digest_sspi.c   \

  vauth/krb5_gssapi.c   \
  vauth/krb5_sspi.c     \
  vauth/ntlm.c          \
  vauth/ntlm_sspi.c     \
  vauth/oauth2.c        \
  vauth/spnego_gssapi.c \
  vauth/spnego_sspi.c   \







>







705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcurl.pc
LIB_VAUTH_CFILES = \
  vauth/cleartext.c     \
  vauth/cram.c          \
  vauth/digest.c        \
  vauth/digest_sspi.c   \
  vauth/gsasl.c         \
  vauth/krb5_gssapi.c   \
  vauth/krb5_sspi.c     \
  vauth/ntlm.c          \
  vauth/ntlm_sspi.c     \
  vauth/oauth2.c        \
  vauth/spnego_gssapi.c \
  vauth/spnego_sspi.c   \
726
727
728
729
730
731
732

733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748

749
750
751
752
753
754
755
  vtls/gtls.c               \
  vtls/keylog.c             \
  vtls/mbedtls.c            \
  vtls/mbedtls_threadlock.c \
  vtls/mesalink.c           \
  vtls/nss.c                \
  vtls/openssl.c            \

  vtls/schannel.c           \
  vtls/schannel_verify.c    \
  vtls/sectransp.c          \
  vtls/vtls.c               \
  vtls/wolfssl.c

LIB_VTLS_HFILES = \
  vtls/bearssl.h            \
  vtls/gskit.h              \
  vtls/gtls.h               \
  vtls/keylog.h             \
  vtls/mbedtls.h            \
  vtls/mbedtls_threadlock.h \
  vtls/mesalink.h           \
  vtls/nssg.h               \
  vtls/openssl.h            \

  vtls/schannel.h           \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/wolfssl.h

LIB_VQUIC_CFILES = \
  vquic/ngtcp2.c   \







>
















>







730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
  vtls/gtls.c               \
  vtls/keylog.c             \
  vtls/mbedtls.c            \
  vtls/mbedtls_threadlock.c \
  vtls/mesalink.c           \
  vtls/nss.c                \
  vtls/openssl.c            \
  vtls/rustls.c             \
  vtls/schannel.c           \
  vtls/schannel_verify.c    \
  vtls/sectransp.c          \
  vtls/vtls.c               \
  vtls/wolfssl.c

LIB_VTLS_HFILES = \
  vtls/bearssl.h            \
  vtls/gskit.h              \
  vtls/gtls.h               \
  vtls/keylog.h             \
  vtls/mbedtls.h            \
  vtls/mbedtls_threadlock.h \
  vtls/mesalink.h           \
  vtls/nssg.h               \
  vtls/openssl.h            \
  vtls/rustls.h             \
  vtls/schannel.h           \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/wolfssl.h

LIB_VQUIC_CFILES = \
  vquic/ngtcp2.c   \
Changes to jni/curl/RELEASE-NOTES.
1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16

17
18
19

20
21

22

23
24



25


26
27
28
29



30



31
32
33
34

35
36
37
38
39

40
41
42
43
44
45
46
47
48
49
50
51
52
53

54
55
56
57
58
59
60


61
62
63
64
65

66
67
68
69
70
71

72
73
74
75






76
77
78
79
80
81

82
83
84
85
86
87
88
89

90
91
92
93

94



95
96




97
98
99
100
101
102

103
104
105
106
107
108
109
110
111
112
113


114
115
116
117
118
119
120

121




122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

141
142
143
144
145
146
147

148

149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191

192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224





225
226
227
228
229
230
231
232
233
234
235

236
237
238

239
240
241
242




243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262










curl and libcurl 7.75.0

 Public curl releases:         197
 Command line options:         237
 curl_easy_setopt() options:   285
 Public functions in libcurl:  85
 Contributors:                 2322

This release includes the following changes:


 o curl: add --create-file-mode [mode] [28]
 o curl: add new variables to --write-out [25]
 o dns: extend CURLOPT_RESOLVE syntax for adding non-permanent entries [53]
 o gopher: implement secure gopher protocol [2]
 o http: add Hyper as new optional HTTP backend [24]
 o http: introduce AWS HTTP v4 Signature support [26]


This release includes the following bugfixes:


 o badsymbols.pl: add verbose mode -v [31]
 o badsymbols.pl: ignore stand-alone single hash lines [40]

 o BUG-BOUNTY: minor language updates [5]

 o build: fix djgpp builds [84]
 o cleanup: fix empty expression statement has no effect



 o cmake: Add an option to disable libidn2 [48]


 o cmake: enable gophers correctly in curl-config [10]
 o cmake: expose CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG [32]
 o cmdline-opts/gen.pl: return hard on errors [11]
 o cmdline-opts/retry.d: mention response code 429 as well [47]



 o configure: set -Wextra-semi-stmt for clang with --enable-debug [52]



 o connect: defer port selection until connect() time [22]
 o connect: mark intentional ignores of setsockopt return values [75]
 o connect: on linux, enable reporting of all ICMP errors on UDP sockets [27]
 o connect: zero variable on stack to silence valgrind complaint [23]

 o cookie: avoid the C1001 internal compiler error with MSVC 14 [36]
 o curl.1: fix typo microsft -> microsoft [56]
 o curl: fix handling of -q option [39]
 o curl: include the file name in --xattr/--remote-time error msgs
 o curl: move fprintf outputs to warnf [105]

 o Curl_chunker: shrink the struct [104]
 o curl_easy_pause.3: add multiplexed pause effects [41]
 o CURLINFO_PRETRANSFER_TIME.3: clarify [61]
 o CURLOPT_URL.3: remove scheme specific details [12]
 o digest_sspi: Show InitializeSecurityContext errors in verbose mode [8]
 o docs/examples: adjust prototypes for CURLOPT_READFUNCTION [51]
 o docs/URL-SYNTAX: the URL syntax curl accepts and works with [15]
 o docs: enable syntax highlighting in several docs files [16]
 o docs: fix line length bug in gen.pl [70]
 o docs: fix typos in NEW-PROTOCOL.md [102]
 o docs: fix wrong documentation in help.d [71]
 o docs: remove redundant "better" in --fail help [55]
 o doh: allocate state struct on demand [85]
 o examples/libtest: add .checksrc to dist [14]

 o examples: remove superfluous asterisk uses
 o failf: remove newline from formatting strings [35]
 o file: don't provide content-length for directories [49]
 o getinfo: build with disabled HTTP support
 o gitattributes: Set batch files to CRLF line endings on checkout [65]
 o h2: do not wait for RECV on paused transfers [43]
 o HISTORY: added dates to early history


 o http: empty reply connection are not left intact [80]
 o http: get CURLOPT_REQUEST_TARGET working with a HTTP proxy [83]
 o http: have CURLOPT_FAILONERROR fail after all headers [54]
 o http: make providing Proxy-Connection header not cause duplicated headers [92]
 o http: show the request as headers even when split-sending [7]

 o http_chunks: correct and clarify a comment on hexnumber length [88]
 o http_proxy: Fix CONNECT chunked encoding race condition [76]
 o httpauth: make multi-request auth work with custom port [45]
 o INSTALL: now at 85 operating systems
 o INSTALL: update the list known OSes and CPU archs curl has run on [38]
 o lib/unit tests: add missing curl_global_cleanup() calls

 o lib1564/5: verify that curl_multi_wakeup returns OK
 o lib: pass in 'struct Curl_easy *' to most functions [101]
 o lib: remove Curl_ prefix from many static functions [66]
 o lib: save a bit of space with some structure packing [82]






 o libssh2: fix "Value stored to 'readdir_len' is never read"
 o libssh2: move data from connection object to transfer object [114]
 o libssh: avoid plain free() of libssh-memory [99]
 o mime: make sure setting MIMEPOST to NULL resets properly [58]
 o misc: assorted typo fixes [57]
 o misc: fix "warning: empty expression statement has no effect" [30]

 o misc: fix typos [73]
 o mk-ca-bundle.pl: deterministic output when using -t [62]
 o mqtt: deal with 0 byte reads correctly [4]
 o mqtt: handle POST/PUBLISH without a set POSTFIELDSIZE [1]
 o multi: set the PRETRANSFER time-stamp when we switch to PERFORM [59]
 o multi: skip DONE state if there's no connection left for ftp wildcard
 o multi: when erroring in TOOFAST state, act as for PERFORM [9]
 o multi_runsingle: bail out early on data->conn == NULL [74]

 o ngtcp2: Fix http3 upload stall [106]
 o ngtcp2: Fix stack buffer overflow [107]
 o ngtcp2: make it build it current master again [21]
 o nss: get the run-time version instead of build-time [67]

 o openssl: lowercase the hostname before using it for SNI [46]



 o OS400: update ccsidcurl.c [20]
 o pretransfer: setup the User-Agent header here [60]




 o quiche: remove fprintf() leftover
 o Revert "CI/github: work-around for brew breakage on macOS" [17]
 o runtests: add 'wakeup' as a feature
 o runtests: add support for %if [feature] conditions [19]
 o runtests: preprocess DISABLED to allow conditionals [93]
 o schannel: plug a memory-leak [64]

 o schannel_verify: fix safefree call typo [50]
 o select: convert Curl_select() to private static function [103]
 o socks: use the download buffer instead [86]
 o speedcheck: exclude paused transfers [42]
 o strerror: skip errnum >= 0 assertion on windows [78]
 o test1522: add debug tracing [3]
 o test1633: set appropriate name
 o test179: use consistent header line endings
 o test410: verify HTTPS GET with a 49K request header
 o tests/mqttd: extract the client id from the correct offset [13]
 o tests: make --libcurl tests only test FTP options if ftp enabled [18]


 o tool_doswin: Restore original console settings on CTRL signal [68]
 o tool_operate: fix the suppression logic of some error messages [33]
 o tool_operate: spellfix a comment
 o tooĺ_writeout: fix the -w time output units [6]
 o transfer: fix GCC 10 warning with flag '-Wint-in-bool-context' [79]
 o travis: build ngtcp2 --with-gnutls [72]
 o travis: limit the tests with quiche builds to HTTPS and FTPS only [44]

 o travis: restrict the openssl3 job to only run https and ftps tests [34]




 o url: if IDNA conversion fails, fallback to Transitional [29]
 o urldata: make magic be the first struct field [87]
 o urldata: remove 'local_ip' from the connectdata struct [97]
 o urldata: remove duplicate 'upkeep_interval_ms' from connectdata [96]
 o urldata: remove duplicate port number storage [98]
 o urldata: remove the duplicate 'ip_addr_str' field [100]
 o urldata: store ip version in a single byte [95]
 o vtls: remove md5sum [69]
 o warnless: remove curlx_ultosi [108]
 o wolfssl: add SECURE_RENEGOTIATION support [63]
 o wolfssl: Support wolfSSL builds missing TLS 1.1 [37]

This release includes the following known bugs:

 o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)

This release would not have looked like this without help, code, reports and
advice from friends like these:


  0xflotus on github, Alessandro Ghedini, Andrey Gursky, Bubu on github,
  Cherish98 on github, Christoph M. Becker, Cory Benfield, Cristian Rodríguez,
  Dan Fandrich, Daniel Stenberg, David Earl, Denis Laxalde, Dennis Clarke,
  Dmitry Wagin, Douglas R. Reno, Earnestly on github, Emil Engler, Erik Olsson,
  Fabian Keil, Flameborn on github, Ganesh Kamath, Gergely Nagy, Gisle Vanem,
  Hans-Christian Noren Egtvedt, Harry Sintonen, Himanshu Gupta, Hongyi Zhao,
  Ian Spence, Ikko Ashimine, Jacob Hoffman-Andrews, Jeremy Thibault,

  Jon Rumsey, Jon Wilkes, Julian Montes, Kevin Ushey, Marcel Raad,

  Matthias Gatto, Matt Holt, Michał Antoniak, Mike Gelfand, Mike Tzou,
  Nick Zitzmann, Olaf Hering, parazyd on github, Patrick Monnerat, Paul Groke,
  Ray Satiro, Razvan Cojocaru, Rich Turner, Sai Ram Kunala, Sean McArthur,
  Tatsuhiro Tsujikawa, Tomas Berger, UrsusArctos on github, Viktor Szakats,
  William A. Rowe Jr, XhmikosR on github, 不确定
  (58 contributors)

        Thanks! (and sorry if I forgot to mention someone)

References to bug reports and discussions on issues:

 [1] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28735
 [2] = https://curl.se/bug/?i=6208
 [3] = https://curl.se/bug/?i=6331
 [4] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28676
 [5] = https://curl.se/bug/?i=6318
 [6] = https://curl.se/bug/?i=6321
 [7] = https://curl.se/bug/?i=6328
 [8] = https://curl.se/bug/?i=6315
 [9] = https://curl.se/bug/?i=6333
 [10] = https://curl.se/bug/?i=6336
 [11] = https://curl.se/bug/?i=6354
 [12] = https://curl.se/bug/?i=6307
 [13] = https://curl.se/bug/?i=6334
 [14] = https://curl.se/bug/?i=6176
 [15] = https://curl.se/bug/?i=6285
 [16] = https://curl.se/bug/?i=6286
 [17] = https://curl.se/bug/?i=6332
 [18] = https://curl.se/bug/?i=6303
 [19] = https://curl.se/bug/?i=6304
 [20] = https://curl.se/bug/?i=6292
 [21] = https://curl.se/bug/?i=6296
 [22] = https://curl.se/bug/?i=6295
 [23] = https://curl.se/bug/?i=6289
 [24] = https://curl.se/bug/?i=6110
 [25] = https://curl.se/bug/?i=6199
 [26] = https://curl.se/bug/?i=5703
 [27] = https://curl.se/bug/?i=6341
 [28] = https://curl.se/bug/?i=6244
 [29] = https://curl.se/bug/?i=6423
 [30] = https://github.com/curl/curl/commit/08e8455dddc5e48e58a12ade3815c01ae3da3b64#commitcomment-45433279
 [31] = https://curl.se/bug/?i=6349
 [32] = https://curl.se/bug/?i=6435

 [33] = https://curl.se/mail/archive-2020-12/0017.html
 [34] = https://curl.se/bug/?i=6345
 [35] = https://curl.se/bug/?i=6365
 [36] = https://curl.se/bug/?i=6112
 [37] = https://curl.se/mail/lib-2020-12/0121.html
 [38] = https://curl.se/bug/?i=6366
 [39] = https://curl.se/bug/?i=6364
 [40] = https://curl.se/mail/lib-2020-12/0084.html
 [41] = https://curl.se/bug/?i=6360
 [42] = https://curl.se/bug/?i=6358
 [43] = https://curl.se/bug/?i=6356
 [44] = https://curl.se/bug/?i=6403
 [45] = https://curl.se/bug/?i=6397
 [46] = https://curl.se/bug/?i=6540
 [47] = https://curl.se/mail/archive-2020-12/0018.html
 [48] = https://curl.se/bug/?i=6361
 [49] = https://curl.se/bug/?i=6421
 [50] = https://curl.se/bug/?i=6459
 [51] = https://curl.se/bug/?i=6392
 [52] = https://curl.se/bug/?i=6378
 [53] = https://curl.se/bug/?i=6294
 [54] = https://curl.se/bug/?i=6408
 [55] = https://curl.se/bug/?i=6385
 [56] = https://curl.se/bug/?i=6380
 [57] = https://curl.se/bug/?i=6375
 [58] = https://curl.se/bug/?i=6455
 [59] = https://curl.se/bug/?i=6454
 [60] = https://curl.se/bug/?i=6312
 [61] = https://curl.se/bug/?i=6453
 [62] = https://curl.se/bug/?i=6413
 [63] = https://curl.se/bug/?i=6411
 [64] = https://curl.se/bug/?i=6457
 [65] = https://github.com/curl/curl/discussions/6427





 [66] = https://curl.se/bug/?i=6443
 [67] = https://curl.se/bug/?i=6445
 [68] = https://curl.se/bug/?i=6226
 [69] = https://curl.se/bug/?i=6557
 [70] = https://curl.se/bug/?i=6438
 [71] = https://curl.se/bug/?i=6436
 [72] = https://curl.se/bug/?i=6493
 [73] = https://curl.se/mail/lib-2021-01/0063.html
 [74] = https://curl.se/bug/?i=6433
 [75] = https://curl.se/bug/?i=6431
 [76] = https://curl.se/mail/lib-2021-01/0033.html

 [78] = https://curl.se/bug/?i=6504
 [79] = https://curl.se/bug/?i=6537
 [80] = https://twitter.com/mholt6/status/1352130240265375744

 [82] = https://curl.se/bug/?i=6483
 [83] = https://curl.se/bug/?i=6490
 [84] = https://curl.se/bug/?i=6382
 [85] = https://curl.se/bug/?i=6492




 [86] = https://curl.se/bug/?i=6491
 [87] = https://curl.se/bug/?i=6484
 [88] = https://curl.se/bug/?i=6489
 [92] = https://curl.se/mail/lib-2021-01/0095.html
 [93] = https://curl.se/bug/?i=6477
 [95] = https://curl.se/bug/?i=6534
 [96] = https://curl.se/bug/?i=6534
 [97] = https://curl.se/bug/?i=6534
 [98] = https://curl.se/bug/?i=6534
 [99] = https://curl.se/bug/?i=6481
 [100] = https://curl.se/bug/?i=6534
 [101] = https://curl.se/bug/?i=6425
 [102] = https://curl.se/bug/?i=6471
 [103] = https://curl.se/bug/?i=6531
 [104] = https://curl.se/bug/?i=6527
 [105] = https://curl.se/bug/?i=6533
 [106] = https://curl.se/bug/?i=6521
 [107] = https://curl.se/bug/?i=6521
 [108] = https://curl.se/bug/?i=6530
 [114] = https://curl.se/bug/?i=6519










|

|
|
|

|



>
|
|
<
<
|
|
>



>
|
<
>
|
>
|
|
>
>
>
|
>
>
|
|
|
<
>
>
>
|
>
>
>
|
<
<
<
>
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
<
<
|
|
>
>
|
|
|
|
|
>
|
<
|
|
<
|
>
|
|
|
|
>
>
>
>
>
>
|
|
|
<
<
<
>
|
<
<
<
|
|
|
|
>
|
|
|
<
>
|
>
>
>
|
<
>
>
>
>
|
<
<
<
<
<
>
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
<
|
|
|
>
|
>
>
>
>
|
|
|
|
|
|
|
<
<
|
<








>
|
|
|
|
<
<
|
>
|
>
|
|
<
|
|


<
<


|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
<
<
|
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
>
|
|
|
|
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13


14
15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40
41
42
43



44
45
46
47

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

66


67
68
69
70
71
72
73
74
75
76
77

78
79

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94



95
96



97
98
99
100
101
102
103
104

105
106
107
108
109
110

111
112
113
114
115





116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132

133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148


149

150
151
152
153
154
155
156
157
158
159
160
161
162


163
164
165
166
167
168

169
170
171
172


173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203

204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233





234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
curl and libcurl 7.76.0

 Public curl releases:         198
 Command line options:         240
 curl_easy_setopt() options:   288
 Public functions in libcurl:  85
 Contributors:                 2356

This release includes the following changes:

 o cookies: Support multiple -b parameters [69]
 o curl: add --fail-with-body [17]
 o doh: add options to disable ssl verification [5]


 o http: add support to read and store the referrer header [30]
 o sasl: support SCRAM-SHA-1 and SCRAM-SHA-256 via libgsasl [4]
 o vtls: initial implementation of rustls backend [3]

This release includes the following bugfixes:

 o CVE-2021-22876: strip credentials from the auto-referer header field [88]
 o CVE-2021-22890: add 'isproxy' argument to Curl_ssl_get/addsessionid() [55]

 o asyn-ares: use consistent resolve error message [37]
 o BUG-BOUNTY: removed the cooperation mention
 o build: delete unused feature guards [51]
 o build: fix --disable-dateparse [1]
 o build: fix --disable-http-auth
 o build: remove all traces of USE_BLOCKING_SOCKETS [70]
 o c-hyper: Remove superfluous pointer check [56]
 o c-hyper: support automatic content-encoding [74]
 o CI/azure: disable test 433 on azure-ubuntu [105]
 o CI/azure: replace python-impacket with python3-impacket [61]
 o ci: stop building on freebsd-12-1 [38]
 o cmake: fix import library name for non-MS compiler on Windows [10]
 o cmake: use CMAKE_INSTALL_INCLUDEDIR indirection [49]
 o cmake: support WinIDN [100]

 o config: fix building SMB with configure using Win32 Crypto [91]
 o config: fix detection of restricted Windows App environment
 o configure: fail if --with-quiche is used and quiche isn't found [48]
 o configure: make AC_TRY_* into AC_*_IFELSE
 o configure: make hyper opt-in, and fail if missing [53]
 o configure: only add OpenSSL paths if they are defined [68]
 o configure: provide Largefile feature for curl-config [79]
 o configure: remove use of deprecated macros



 o configure: s/AC_HELP_STRING/AS_HELP_STRING [110]
 o cookies: Fix potential NULL pointer deref with PSL [66]
 o curl: set CURLOPT_NEW_FILE_PERMS if requested [65]
 o curl_easy_setopt.3: add curl_easy_option* functions to SEE ALSO

 o curl_multibyte: always return a heap-allocated copy of string [29]
 o curl_multibyte: fall back to local code page stat/access on Windows [8]
 o Curl_timeleft: check both timeouts during connect [109]
 o curl_url_set.3: mention CURLU_PATH_AS_IS [13]
 o CURLOPT_QUOTE.3: clarify that libcurl doesn't parse what's sent [16]
 o docs/HTTP2: remove the outdated remark about multiplexing for the tool
 o docs/Makefile.inc: format to be update-friendly [11]
 o docs: add CURLOPT_CURLU to 'See also' in curl_url_ functions [52]
 o docs: add missing Arg tag to --stderr [58]
 o docs: Add SSL backend names to CURL_SSL_BACKEND [106]
 o docs: clarify timeouts for queued transfers in multi API [101]
 o docs: Explain DOH transfers inherit some SSL settings [107]
 o docs: fix FILE example url in --metalink documentation [19]
 o docs: make gen.pl support *italic* and **bold** [112]
 o doh: Fix sharing user's resolve list with DOH handles [46]
 o doh: Inherit CURLOPT_STDERR from user's easy handle [60]
 o dynbuf: bump the max HTTP request to 1MB [39]
 o examples: Remove threaded-shared-conn.c due to bug [119]

 o file: Support unicode urls on windows [9]


 o ftp: add 'list_only' to the transfer state struct [35]
 o ftp: add 'prefer_ascii' to the transfer state struct [36]
 o FTP: allow SIZE to fail when doing (resumed) upload [78]
 o ftp: avoid SIZE when asking for a TYPE A file [23]
 o ftp: fix Codacy/cppcheck warning about null pointer arithmetic [34]
 o ftp: fix memory leak in ftp_done [96]
 o ftp: never set data->set.ftp_append outside setopt [14]
 o gen.pl: quote "bare" minuses in the nroff curl.1 [92]
 o github: add torture-ftp for FTP-only torture testing [94]
 o gnutls: assume nettle crypto support [33]
 o gskit: correct the gskit_send() prototype [21]

 o hostip: fix build with sync resolver [20]
 o hostip: fix crash in sync resolver builds that use DOH [12]

 o hsts: remove unused defines [93]
 o http2: don't set KEEP_SEND when there's no more data to be sent [90]
 o http2: fail if connection terminated without END_STREAM [97]
 o http: cap body data amount during send speed limiting [116]
 o http: do not add a referrer header with empty value [44]
 o http: make 416 not fail with resume + CURLOPT_FAILONERRROR [108]
 o http: remove superfluous NULL assign [75]
 o http: strip default port from URL sent to proxy [104]
 o http: use credentials from transfer, not connection [25]
 o ldap: use correct memory free function [63]
 o lib1536: check ptr against NULL before dereferencing it [83]
 o lib1537: check ptr against NULL before dereferencing it [84]
 o lib: remove 'conn->data' completely [45]
 o libssh2: kdb_callback: get the right struct pointer [99]
 o libssh2:ssh_connect: clear session pointer after free [98]



 o memdebug: close debug logfile explicitly on exit [28]
 o mingw: enable using strcasecmp() [50]



 o multi: close the connection when h2=>h1 downgrading [122]
 o multi: do once-per-transfer inits in before_perform in DID state [54]
 o multi: rename the multi transfer states [43]
 o multi: update pending list when removing handle [82]
 o ngtcp2: adapt to the new recv_datagram callback
 o ngtcp2: clarify calculation precedence [27]
 o ngtcp2: Fix build error due to change in ngtcp2_addr_init [81]
 o ngtcp2: sync with recent API updates [113]

 o openldap: avoid NULL pointer dereferences [102]
 o openssl: adapt to v3's new const for a few API calls [86]
 o openssl: ensure to check SSL_CTX_set_alpn_protos return values [121]
 o openssl: remove get_ssl_version_txt in favor of SSL_get_version [67]
 o openssl: set the transfer pointer for logging early [123]
 o OS400: update for CURLOPT_AWS_SIGV4 [2]

 o parse_proxy: fix a memory leak in the OOM path [41]
 o pathhelp.pm: fix use of pwd -L in Msys environment
 o projects: Update VS projects for OpenSSL 1.1.x [59]
 o quiche: fix build error: use 'int' for port number
 o quiche: fix crash when failing to connect [87]





 o retry-all-errors.d: Explain curl errors versus HTTP response errors [72]
 o retry.d: Clarify transient 5xx HTTP response codes [71]
 o runtests.pl: add %TESTNUMBER variable to make copying tests more convenient
 o runtests.pl: add a -P option to specify an external proxy
 o runtests.pl: kill processes locking test log files [62]
 o setopt: error on CURLOPT_HTTP09_ALLOWED set true with Hyper [77]
 o test1188: change error to check for: --fail HTTP status [26]
 o test220/314: adjust to run with Hyper
 o test304: header CRLF cleanup to work with Hyper
 o test306: make it not run with Hyper
 o tests: disable .curlrc in more environments [7]
 o tests: use %TESTNUMBER instead of fixed number [103]
 o tftp: remove the 3600 second default timeout [111]
 o time: enable 64-bit time_t in supported mingw environments [24]
 o tool_help: add missing argument for --create-file-mode [18]
 o tool_help: Increase space between option and description [64]
 o tool_operate: bail if set CURLOPT_HTTP09_ALLOWED returns error [76]

 o travis: add a rustls build [89]
 o travis: bump wolfssl to 4.7.0
 o travis: only build wolfssl when needed [85]
 o travis: split "torture" into a separate "events" build [95]
 o travis: switch ngtcp2 build over to quictls [73]
 o travis: use ubuntu nghttp2 package instead of build our own [80]
 o url.c: use consistent error message for failed resolve
 o url: fix memory leak if OOM in the HSTS handling [32]
 o url: fix possible use-after-free in default protocol [42]
 o urldata: don't touch data->set.httpversion at run-time [6]
 o urldata: fix build without HTTP and MQTT [22]
 o urldata: make 'actions[]' use unsigned char instead of int [47]
 o urldata: merge "struct DynamicStatic" into "struct UrlState" [117]
 o urldata: remove the 'rtspversion' field [15]
 o urldata: remove the _ORIG suffix from string names [31]
 o version.d: Add missing features to the features list [57]


 o wolfssl: don't store a NULL sessionid [40]


This release includes the following known bugs:

 o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Ádler Jonas Gross, Alejandro Colomar, Alex Xu, Amaury Denoyelle, Andrei Bica,
  Anthony Ramine, arvids-kokins-bidstack on github, awesomenode on github,
  Benbuck Nason, Bodo Bergmann, Carl Zogheib, Christian Schmitz, Dan Fandrich,
  Daniel Gustafsson, Daniel Stenberg, David Demelier, David Goerger, David Hu,
  ebejan on github, Emil Engler, Fabian Keil, Firefox OS, Gisle Vanem,


  Gregor Jasny, Ikko Ashimine, Jack Boos Yu, Jacob Hoffman-Andrews,
  Jean-Philippe Menil, Joel Teichroeb, Johannes Lesr, Jonathan Watt,
  Jon Rumsey, Jordan Brown, Joseph Chen, Jun-ya Kato, kokke on github,
  Lawrence Gripper, Li Xinwei, Manuj Bhatia, Marcel Raad, Marc Hörsken,
  Michael Brown, Michael Hordijk, Mingtao Yang, Oumph on github,
  Patrick Monnerat, Per Jensen, Ray Satiro, Robert Ronto, Sergei Nikulov,

  Simon Josefsson, Stephan Szabo, Tomas Berger, Viktor Szakats, Vincent Torri,
  Vladimir Varlamov, ZimCodes on github, ウさん
  (58 contributors)



References to bug reports and discussions on issues:

 [1] = https://curl.se/mail/lib-2021-02/0008.html
 [2] = https://curl.se/bug/?i=6560
 [3] = https://curl.se/bug/?i=6350
 [4] = https://curl.se/bug/?i=6372
 [5] = https://curl.se/bug/?i=4578
 [6] = https://curl.se/bug/?i=6585
 [7] = https://curl.se/bug/?i=6595
 [8] = https://curl.se/bug/?i=6514
 [9] = https://curl.se/bug/?i=6501
 [10] = https://curl.se/bug/?i=6225
 [11] = https://curl.se/bug/?i=6593
 [12] = https://curl.se/bug/?i=6603
 [13] = https://curl.se/mail/lib-2021-02/0046.html
 [14] = https://curl.se/bug/?i=6579
 [15] = https://curl.se/bug/?i=6581
 [16] = https://curl.se/bug/?i=6577
 [17] = https://curl.se/bug/?i=6449
 [18] = https://curl.se/bug/?i=6590
 [19] = https://curl.se/bug/?i=6573
 [20] = https://curl.se/bug/?i=6566
 [21] = https://curl.se/bug/?i=6569
 [22] = https://curl.se/bug/?i=6562
 [23] = https://curl.se/bug/?i=6564
 [24] = https://curl.se/bug/?i=6636
 [25] = https://curl.se/bug/?i=6542
 [26] = https://curl.se/bug/?i=6637
 [27] = https://curl.se/bug/?i=6576
 [28] = https://github.com/curl/curl/pull/6591#issuecomment-780396541
 [29] = https://curl.se/bug/?i=6602

 [30] = https://curl.se/bug/?i=6591
 [31] = https://curl.se/bug/?i=6624
 [32] = https://github.com/curl/curl/pull/6627#issuecomment-781626205
 [33] = https://curl.se/bug/?i=6625
 [34] = https://curl.se/bug/?i=6576
 [35] = https://curl.se/bug/?i=6578
 [36] = https://curl.se/bug/?i=6578
 [37] = https://curl.se/bug/?i=6626
 [38] = https://curl.se/bug/?i=6622
 [39] = https://curl.se/bug/?i=6681
 [40] = https://curl.se/bug/?i=6616
 [41] = https://github.com/curl/curl/pull/6591#issuecomment-780396541
 [42] = https://github.com/curl/curl/issues/6604#issuecomment-780138219
 [43] = https://curl.se/bug/?i=6612
 [44] = https://curl.se/bug/?i=6610
 [45] = https://curl.se/bug/?i=6608
 [46] = https://curl.se/bug/?i=6589
 [47] = https://curl.se/bug/?i=6648
 [48] = https://curl.se/bug/?i=6652
 [49] = https://curl.se/bug/?i=6440
 [50] = https://curl.se/bug/?i=6644
 [51] = https://curl.se/bug/?i=6645
 [52] = https://curl.se/bug/?i=6639
 [53] = https://curl.se/bug/?i=6598
 [54] = https://curl.se/bug/?i=6640
 [55] = https://curl.se/docs/CVE-2021-22890.html
 [56] = https://curl.se/bug/?i=6697
 [57] = https://curl.se/bug/?i=6677
 [58] = https://curl.se/bug/?i=6692
 [59] = https://curl.se/bug/?i=984





 [60] = https://github.com/curl/curl/issues/6605
 [61] = https://curl.se/bug/?i=6678
 [62] = https://curl.se/bug/?i=6179
 [63] = https://curl.se/bug/?i=6671
 [64] = https://curl.se/bug/?i=6674
 [65] = https://curl.se/bug/?i=6657
 [66] = https://curl.se/bug/?i=6731
 [67] = https://curl.se/bug/?i=6665
 [68] = https://curl.se/bug/?i=6730
 [69] = https://curl.se/bug/?i=6649
 [70] = https://curl.se/bug/?i=6655
 [71] = https://curl.se/bug/?i=6724
 [72] = https://curl.se/bug/?i=6712
 [73] = https://curl.se/bug/?i=6729
 [74] = https://curl.se/bug/?i=6727
 [75] = https://curl.se/bug/?i=6727
 [76] = https://curl.se/bug/?i=6727
 [77] = https://curl.se/bug/?i=6727
 [78] = https://curl.se/bug/?i=6715
 [79] = https://curl.se/bug/?i=6702
 [80] = https://curl.se/bug/?i=6751
 [81] = https://curl.se/bug/?i=6716
 [82] = https://curl.se/bug/?i=6713
 [83] = https://curl.se/bug/?i=6710
 [84] = https://curl.se/bug/?i=6707
 [85] = https://curl.se/bug/?i=6751
 [86] = https://curl.se/bug/?i=6703
 [87] = https://curl.se/bug/?i=6664
 [88] = https://curl.se/docs/CVE-2021-22876.html
 [89] = https://curl.se/bug/?i=6750
 [90] = https://curl.se/bug/?i=6747
 [91] = https://curl.se/bug/?i=6277
 [92] = https://curl.se/bug/?i=6698
 [93] = https://curl.se/bug/?i=6741
 [94] = https://curl.se/bug/?i=6728
 [95] = https://curl.se/bug/?i=6728
 [96] = https://curl.se/bug/?i=6737
 [97] = https://curl.se/bug/?i=6736
 [98] = https://curl.se/bug/?i=6764
 [99] = https://curl.se/bug/?i=6691
 [100] = https://curl.se/bug/?i=6807
 [101] = https://curl.se/bug/?i=6758
 [102] = https://curl.se/bug/?i=6676
 [103] = https://curl.se/bug/?i=6738
 [104] = https://curl.se/bug/?i=6769
 [105] = https://curl.se/bug/?i=6739
 [106] = https://curl.se/bug/?i=6755
 [107] = https://curl.se/bug/?i=6688
 [108] = https://curl.se/bug/?i=6740
 [109] = https://curl.se/bug/?i=6744
 [110] = https://curl.se/bug/?i=6647
 [111] = https://curl.se/bug/?i=6774
 [112] = https://curl.se/bug/?i=6771
 [113] = https://curl.se/bug/?i=6770
 [116] = https://curl.se/mail/lib-2021-03/0042.html
 [117] = https://curl.se/bug/?i=6798
 [119] = https://curl.se/bug/?i=6795
 [121] = https://curl.se/bug/?i=6794
 [122] = https://curl.se/bug/?i=6788
 [123] = https://curl.se/bug/?i=6783
Changes to jni/curl/acinclude.m4.
342
343
344
345
346
347
348

































349
350
351
352
353
354
355
    yes)
      AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1,
        [Define to 1 if you have the ws2tcpip.h header file.])
      ;;
  esac
])



































dnl CURL_CHECK_HEADER_WINLDAP
dnl -------------------------------------------------
dnl Check for compilable and valid winldap.h header

AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
    yes)
      AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1,
        [Define to 1 if you have the ws2tcpip.h header file.])
      ;;
  esac
])


dnl CURL_CHECK_HEADER_WINCRYPT
dnl -------------------------------------------------
dnl Check for compilable and valid wincrypt.h header

AC_DEFUN([CURL_CHECK_HEADER_WINCRYPT], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
  AC_CACHE_CHECK([for wincrypt.h], [curl_cv_header_wincrypt_h], [
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#undef inline
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <wincrypt.h>
      ]],[[
        int dummy=2*PROV_RSA_FULL;
      ]])
    ],[
      curl_cv_header_wincrypt_h="yes"
    ],[
      curl_cv_header_wincrypt_h="no"
    ])
  ])
  case "$curl_cv_header_wincrypt_h" in
    yes)
      AC_DEFINE_UNQUOTED(HAVE_WINCRYPT_H, 1,
        [Define to 1 if you have the wincrypt.h header file.])
      ;;
  esac
])


dnl CURL_CHECK_HEADER_WINLDAP
dnl -------------------------------------------------
dnl Check for compilable and valid winldap.h header

AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385


dnl CURL_CHECK_STRUCT_TIMEVAL
dnl -------------------------------------------------
dnl Check for timeval struct

AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
  AC_REQUIRE([AC_HEADER_TIME])dnl
  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
  AC_CHECK_HEADERS(sys/types.h sys/time.h time.h sys/socket.h)
  AC_CACHE_CHECK([for struct timeval], [curl_cv_struct_timeval], [
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#undef inline







<







1404
1405
1406
1407
1408
1409
1410

1411
1412
1413
1414
1415
1416
1417


dnl CURL_CHECK_STRUCT_TIMEVAL
dnl -------------------------------------------------
dnl Check for timeval struct

AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [

  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
  AC_CHECK_HEADERS(sys/types.h sys/time.h time.h sys/socket.h)
  AC_CACHE_CHECK([for struct timeval], [curl_cv_struct_timeval], [
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#undef inline
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583


dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
dnl -------------------------------------------------
dnl Check if monotonic clock_gettime is available.

AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
  AC_REQUIRE([AC_HEADER_TIME])dnl
  AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
  AC_MSG_CHECKING([for monotonic clock_gettime])
  #
  if test "x$dontwant_rt" = "xno" ; then
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#ifdef HAVE_SYS_TYPES_H







<







1601
1602
1603
1604
1605
1606
1607

1608
1609
1610
1611
1612
1613
1614


dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
dnl -------------------------------------------------
dnl Check if monotonic clock_gettime is available.

AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [

  AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
  AC_MSG_CHECKING([for monotonic clock_gettime])
  #
  if test "x$dontwant_rt" = "xno" ; then
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#ifdef HAVE_SYS_TYPES_H
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
dnl /etc/ssl/certs/ (ca path) SUSE

AC_DEFUN([CURL_CHECK_CA_BUNDLE], [

  AC_MSG_CHECKING([default CA cert bundle/path])

  AC_ARG_WITH(ca-bundle,
AC_HELP_STRING([--with-ca-bundle=FILE],
[Path to a file containing CA certificates (example: /etc/ca-bundle.crt)])
AC_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]),
  [
    want_ca="$withval"
    if test "x$want_ca" = "xyes"; then
      AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle])
    fi
  ],
  [ want_ca="unset" ])
  AC_ARG_WITH(ca-path,
AC_HELP_STRING([--with-ca-path=DIRECTORY],
[Path to a directory containing CA certificates stored individually, with \
their filenames in a hash format. This option can be used with the OpenSSL, \
GnuTLS and mbedTLS backends. Refer to OpenSSL c_rehash for details. \
(example: /etc/certificates)])
AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
  [
    want_capath="$withval"
    if test "x$want_capath" = "xyes"; then
      AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory])
    fi
  ],
  [ want_capath="unset"])







|

|








|




|







2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
dnl /etc/ssl/certs/ (ca path) SUSE

AC_DEFUN([CURL_CHECK_CA_BUNDLE], [

  AC_MSG_CHECKING([default CA cert bundle/path])

  AC_ARG_WITH(ca-bundle,
AS_HELP_STRING([--with-ca-bundle=FILE],
[Path to a file containing CA certificates (example: /etc/ca-bundle.crt)])
AS_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]),
  [
    want_ca="$withval"
    if test "x$want_ca" = "xyes"; then
      AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle])
    fi
  ],
  [ want_ca="unset" ])
  AC_ARG_WITH(ca-path,
AS_HELP_STRING([--with-ca-path=DIRECTORY],
[Path to a directory containing CA certificates stored individually, with \
their filenames in a hash format. This option can be used with the OpenSSL, \
GnuTLS and mbedTLS backends. Refer to OpenSSL c_rehash for details. \
(example: /etc/certificates)])
AS_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
  [
    want_capath="$withval"
    if test "x$want_capath" = "xyes"; then
      AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory])
    fi
  ],
  [ want_capath="unset"])
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
  fi
  if test "x$ca" = "xno" && test "x$capath" = "xno"; then
    AC_MSG_RESULT([no])
  fi

  AC_MSG_CHECKING([whether to use builtin CA store of SSL library])
  AC_ARG_WITH(ca-fallback,
AC_HELP_STRING([--with-ca-fallback], [Use the built in CA store of the SSL library])
AC_HELP_STRING([--without-ca-fallback], [Don't use the built in CA store of the SSL library]),
  [
    if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then
      AC_MSG_ERROR([--with-ca-fallback only allows yes or no as parameter])
    fi
  ],
  [ with_ca_fallback="no"])
  AC_MSG_RESULT([$with_ca_fallback])







|
|







2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
  fi
  if test "x$ca" = "xno" && test "x$capath" = "xno"; then
    AC_MSG_RESULT([no])
  fi

  AC_MSG_CHECKING([whether to use builtin CA store of SSL library])
  AC_ARG_WITH(ca-fallback,
AS_HELP_STRING([--with-ca-fallback], [Use the built in CA store of the SSL library])
AS_HELP_STRING([--without-ca-fallback], [Don't use the built in CA store of the SSL library]),
  [
    if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then
      AC_MSG_ERROR([--with-ca-fallback only allows yes or no as parameter])
    fi
  ],
  [ with_ca_fallback="no"])
  AC_MSG_RESULT([$with_ca_fallback])
2349
2350
2351
2352
2353
2354
2355

2356
2357
2358
2359
2360










































2361
2362
2363
2364
2365
2366
2367
    fi
  fi
  case "$curl_win32_file_api" in
    win32_large_files)
      AC_MSG_RESULT([yes (large file enabled)])
      AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1,
        [Define to 1 if you are building a Windows target with large file support.])

      ;;
    win32_small_files)
      AC_MSG_RESULT([yes (large file disabled)])
      AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1,
        [Define to 1 if you are building a Windows target without large file support.])










































      ;;
    *)
      AC_MSG_RESULT([no])
      ;;
  esac
])








>





>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
    fi
  fi
  case "$curl_win32_file_api" in
    win32_large_files)
      AC_MSG_RESULT([yes (large file enabled)])
      AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1,
        [Define to 1 if you are building a Windows target with large file support.])
      AC_SUBST(USE_WIN32_LARGE_FILES, [1])
      ;;
    win32_small_files)
      AC_MSG_RESULT([yes (large file disabled)])
      AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1,
        [Define to 1 if you are building a Windows target without large file support.])
      AC_SUBST(USE_WIN32_SMALL_FILES, [1])
      ;;
    *)
      AC_MSG_RESULT([no])
      ;;
  esac
])

dnl CURL_CHECK_WIN32_CRYPTO
dnl -------------------------------------------------
dnl Check if curl's WIN32 crypto lib can be used

AC_DEFUN([CURL_CHECK_WIN32_CRYPTO], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINCRYPT])dnl
  AC_MSG_CHECKING([whether build target supports WIN32 crypto API])
  curl_win32_crypto_api="no"
  if test "$curl_cv_header_wincrypt_h" = "yes"; then
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#undef inline
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <wincrypt.h>
      ]],[[
        HCRYPTPROV hCryptProv;
        if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
                               CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
          CryptReleaseContext(hCryptProv, 0);
        }
      ]])
    ],[
      curl_win32_crypto_api="yes"
    ])
  fi
  case "$curl_win32_crypto_api" in
    yes)
      AC_MSG_RESULT([yes])
      AC_DEFINE_UNQUOTED(USE_WIN32_CRYPTO, 1,
        [Define to 1 if you are building a Windows target with crypto API support.])
      AC_SUBST(USE_WIN32_CRYPTO, [1])
      ;;
    *)
      AC_MSG_RESULT([no])
      ;;
  esac
])

Changes to jni/curl/configure.
919
920
921
922
923
924
925


926
927
928
929
930
931
932

933
934
935
936
937
938
939
940
941
942
943
944
945
USE_LIBRTMP
USE_WOLFSSH
USE_LIBSSH
USE_LIBSSH2
LIBMETALINK_CPPFLAGS
LIBMETALINK_LDFLAGS
LIBMETALINK_LIBS


USE_LIBPSL_FALSE
USE_LIBPSL_TRUE
CURL_CA_BUNDLE
CURL_WITH_MULTI_SSL
SSL_ENABLED
NSS_LIBS
USE_NSS

USE_BEARSSL
USE_MESALINK
USE_WOLFSSL
USE_MBEDTLS
HAVE_GNUTLS_SRP
USE_GNUTLS_NETTLE
USE_GNUTLS
HAVE_OPENSSL_SRP
RANDOM_FILE
SSL_LIBS
USE_SECTRANSP
USE_WINDOWS_SSPI
USE_SCHANNEL







>
>







>





<







919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940

941
942
943
944
945
946
947
USE_LIBRTMP
USE_WOLFSSH
USE_LIBSSH
USE_LIBSSH2
LIBMETALINK_CPPFLAGS
LIBMETALINK_LDFLAGS
LIBMETALINK_LIBS
USE_GSASL_FALSE
USE_GSASL_TRUE
USE_LIBPSL_FALSE
USE_LIBPSL_TRUE
CURL_CA_BUNDLE
CURL_WITH_MULTI_SSL
SSL_ENABLED
NSS_LIBS
USE_NSS
USE_RUSTLS
USE_BEARSSL
USE_MESALINK
USE_WOLFSSL
USE_MBEDTLS
HAVE_GNUTLS_SRP

USE_GNUTLS
HAVE_OPENSSL_SRP
RANDOM_FILE
SSL_LIBS
USE_SECTRANSP
USE_WINDOWS_SSPI
USE_SCHANNEL
969
970
971
972
973
974
975



976
977
978
979
980
981
982
HAVE_LDAP_SSL
CURL_DISABLE_LDAPS
CURL_DISABLE_LDAP
CURL_DISABLE_FILE
CURL_DISABLE_FTP
CURL_DISABLE_RTSP
CURL_DISABLE_HTTP



DOING_NATIVE_WINDOWS_FALSE
DOING_NATIVE_WINDOWS_TRUE
BUILD_UNITTESTS_FALSE
BUILD_UNITTESTS_TRUE
CURLDEBUG_FALSE
CURLDEBUG_TRUE
CURL_CFLAG_EXTRAS







>
>
>







971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
HAVE_LDAP_SSL
CURL_DISABLE_LDAPS
CURL_DISABLE_LDAP
CURL_DISABLE_FILE
CURL_DISABLE_FTP
CURL_DISABLE_RTSP
CURL_DISABLE_HTTP
USE_WIN32_CRYPTO
USE_WIN32_SMALL_FILES
USE_WIN32_LARGE_FILES
DOING_NATIVE_WINDOWS_FALSE
DOING_NATIVE_WINDOWS_TRUE
BUILD_UNITTESTS_FALSE
BUILD_UNITTESTS_TRUE
CURLDEBUG_FALSE
CURLDEBUG_TRUE
CURL_CFLAG_EXTRAS
1185
1186
1187
1188
1189
1190
1191

1192
1193
1194
1195
1196

1197
1198
1199
1200
1201
1202
1203
with_random
enable_openssl_auto_load_config
with_gnutls
with_mbedtls
with_wolfssl
with_mesalink
with_bearssl

with_nss
with_ca_bundle
with_ca_path
with_ca_fallback
with_libpsl

with_libmetalink
with_libssh2
with_libssh
with_wolfssh
with_librtmp
enable_versioned_symbols
with_winidn







>





>







1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
with_random
enable_openssl_auto_load_config
with_gnutls
with_mbedtls
with_wolfssl
with_mesalink
with_bearssl
with_rustls
with_nss
with_ca_bundle
with_ca_path
with_ca_fallback
with_libpsl
with_libgsasl
with_libmetalink
with_libssh2
with_libssh
with_wolfssh
with_librtmp
enable_versioned_symbols
with_winidn
2063
2064
2065
2066
2067
2068
2069



2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085

2086
2087
2088
2089
2090
2091
2092
  --without-wolfssl       disable WolfSSL detection
  --with-mesalink=PATH    where to look for MesaLink, PATH points to the
                          installation root
  --without-mesalink      disable MesaLink detection
  --with-bearssl=PATH     where to look for BearSSL, PATH points to the
                          installation root
  --without-bearssl       disable BearSSL detection



  --with-nss=PATH         where to look for NSS, PATH points to the
                          installation root
  --without-nss           disable NSS detection
  --with-ca-bundle=FILE   Path to a file containing CA certificates (example:
                          /etc/ca-bundle.crt)
  --without-ca-bundle     Don't use a default CA bundle
  --with-ca-path=DIRECTORY
                          Path to a directory containing CA certificates
                          stored individually, with their filenames in a hash
                          format. This option can be used with the OpenSSL,
                          GnuTLS and mbedTLS backends. Refer to OpenSSL
                          c_rehash for details. (example: /etc/certificates)
  --without-ca-path       Don't use a default CA path
  --with-ca-fallback      Use the built in CA store of the SSL library
  --without-ca-fallback   Don't use the built in CA store of the SSL library
  --without-libpsl        disable support for libpsl cookie checking

  --with-libmetalink=PATH where to look for libmetalink, PATH points to the
                          installation root
  --without-libmetalink   disable libmetalink detection
  --with-libssh2=PATH     Where to look for libssh2, PATH points to the
                          libssh2 installation; when possible, set the
                          PKG_CONFIG_PATH environment variable instead of
                          using this option







>
>
>
















>







2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
  --without-wolfssl       disable WolfSSL detection
  --with-mesalink=PATH    where to look for MesaLink, PATH points to the
                          installation root
  --without-mesalink      disable MesaLink detection
  --with-bearssl=PATH     where to look for BearSSL, PATH points to the
                          installation root
  --without-bearssl       disable BearSSL detection
  --with-rustls=PATH      where to look for rustls, PATH points to the
                          installation root
  --without-rustls        disable rustls detection
  --with-nss=PATH         where to look for NSS, PATH points to the
                          installation root
  --without-nss           disable NSS detection
  --with-ca-bundle=FILE   Path to a file containing CA certificates (example:
                          /etc/ca-bundle.crt)
  --without-ca-bundle     Don't use a default CA bundle
  --with-ca-path=DIRECTORY
                          Path to a directory containing CA certificates
                          stored individually, with their filenames in a hash
                          format. This option can be used with the OpenSSL,
                          GnuTLS and mbedTLS backends. Refer to OpenSSL
                          c_rehash for details. (example: /etc/certificates)
  --without-ca-path       Don't use a default CA path
  --with-ca-fallback      Use the built in CA store of the SSL library
  --without-ca-fallback   Don't use the built in CA store of the SSL library
  --without-libpsl        disable support for libpsl cookie checking
  --without-libgsasl      disable libgsasl support for SCRAM
  --with-libmetalink=PATH where to look for libmetalink, PATH points to the
                          installation root
  --without-libmetalink   disable libmetalink detection
  --with-libssh2=PATH     Where to look for libssh2, PATH points to the
                          libssh2 installation; when possible, set the
                          PKG_CONFIG_PATH environment variable instead of
                          using this option
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889

5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
PKGADD_PKG="HAXXcurl"
PKGADD_NAME="curl - a client that groks URLs"
PKGADD_VENDOR="curl.se"




    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl} )"
    curl_ssh_msg="no      (--with-{libssh,libssh2})"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
   curl_zstd_msg="no      (--with-zstd)"
    curl_gss_msg="no      (--with-gssapi)"

curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"
    curl_idn_msg="no      (--with-{libidn2,winidn})"
 curl_manual_msg="no      (--enable-manual)"
curl_libcurl_msg="enabled (--disable-libcurl-option)"
curl_verbose_msg="enabled (--disable-verbose)"
   curl_sspi_msg="no      (--enable-sspi)"
   curl_ldap_msg="no      (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
  curl_ldaps_msg="no      (--enable-ldaps)"
   curl_rtsp_msg="no      (--enable-rtsp)"
   curl_rtmp_msg="no      (--with-librtmp)"
  curl_mtlnk_msg="no      (--with-libmetalink)"
    curl_psl_msg="no      (--with-libpsl)"
 curl_altsvc_msg="enabled";
    ssl_backends=
     curl_h1_msg="enabled (--with-hyper)"
     curl_h2_msg="no      (--with-nghttp2)"
     curl_h3_msg="no      (--with-ngtcp2, --with-quiche)"

enable_altsvc="yes"

INITIAL_LDFLAGS=$LDFLAGS
INITIAL_LIBS=$LIBS








|





>

















|
|







5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
PKGADD_PKG="HAXXcurl"
PKGADD_NAME="curl - a client that groks URLs"
PKGADD_VENDOR="curl.se"




    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )"
    curl_ssh_msg="no      (--with-{libssh,libssh2})"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
   curl_zstd_msg="no      (--with-zstd)"
    curl_gss_msg="no      (--with-gssapi)"
  curl_gsasl_msg="no      (--with-gsasl)"
curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"
    curl_idn_msg="no      (--with-{libidn2,winidn})"
 curl_manual_msg="no      (--enable-manual)"
curl_libcurl_msg="enabled (--disable-libcurl-option)"
curl_verbose_msg="enabled (--disable-verbose)"
   curl_sspi_msg="no      (--enable-sspi)"
   curl_ldap_msg="no      (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
  curl_ldaps_msg="no      (--enable-ldaps)"
   curl_rtsp_msg="no      (--enable-rtsp)"
   curl_rtmp_msg="no      (--with-librtmp)"
  curl_mtlnk_msg="no      (--with-libmetalink)"
    curl_psl_msg="no      (--with-libpsl)"
 curl_altsvc_msg="enabled";
    ssl_backends=
     curl_h1_msg="enabled (internal)"
     curl_h2_msg="no      (--with-nghttp2, --with-hyper)"
     curl_h3_msg="no      (--with-ngtcp2, --with-quiche)"

enable_altsvc="yes"

INITIAL_LDFLAGS=$LDFLAGS
INITIAL_LIBS=$LIBS

19760
19761
19762
19763
19764
19765
19766




















































19767
19768
19769
19770
19771
19772
19773
cat >>confdefs.h <<_ACEOF
#define HAVE_WS2TCPIP_H 1
_ACEOF

      ;;
  esac






















































    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for winldap.h" >&5
$as_echo_n "checking for winldap.h... " >&6; }
if ${curl_cv_header_winldap_h+:} false; then :
  $as_echo_n "(cached) " >&6
else








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







19772
19773
19774
19775
19776
19777
19778
19779
19780
19781
19782
19783
19784
19785
19786
19787
19788
19789
19790
19791
19792
19793
19794
19795
19796
19797
19798
19799
19800
19801
19802
19803
19804
19805
19806
19807
19808
19809
19810
19811
19812
19813
19814
19815
19816
19817
19818
19819
19820
19821
19822
19823
19824
19825
19826
19827
19828
19829
19830
19831
19832
19833
19834
19835
19836
19837
cat >>confdefs.h <<_ACEOF
#define HAVE_WS2TCPIP_H 1
_ACEOF

      ;;
  esac


    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wincrypt.h" >&5
$as_echo_n "checking for wincrypt.h... " >&6; }
if ${curl_cv_header_wincrypt_h+:} false; then :
  $as_echo_n "(cached) " >&6
else

    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#undef inline
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <wincrypt.h>

int main (void)
{

        int dummy=2*PROV_RSA_FULL;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :

      curl_cv_header_wincrypt_h="yes"

else

      curl_cv_header_wincrypt_h="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext

fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_wincrypt_h" >&5
$as_echo "$curl_cv_header_wincrypt_h" >&6; }
  case "$curl_cv_header_wincrypt_h" in
    yes)

cat >>confdefs.h <<_ACEOF
#define HAVE_WINCRYPT_H 1
_ACEOF

      ;;
  esac


    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for winldap.h" >&5
$as_echo_n "checking for winldap.h... " >&6; }
if ${curl_cv_header_winldap_h+:} false; then :
  $as_echo_n "(cached) " >&6
else

19885
19886
19887
19888
19889
19890
19891

19892
19893
19894
19895
19896
19897
19898
  esac

    ;;
  *)
    curl_cv_header_winsock_h="no"
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"

    curl_cv_header_winldap_h="no"
    curl_cv_header_winber_h="no"
    ;;
esac

    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build target supports WIN32 file API" >&5
$as_echo_n "checking whether build target supports WIN32 file API... " >&6; }







>







19949
19950
19951
19952
19953
19954
19955
19956
19957
19958
19959
19960
19961
19962
19963
  esac

    ;;
  *)
    curl_cv_header_winsock_h="no"
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"
    curl_cv_header_wincrypt_h="no"
    curl_cv_header_winldap_h="no"
    curl_cv_header_winber_h="no"
    ;;
esac

    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build target supports WIN32 file API" >&5
$as_echo_n "checking whether build target supports WIN32 file API... " >&6; }
19960
19961
19962
19963
19964
19965
19966


19967
19968
19969
19970
19971
19972
19973
19974

























































19975
19976
19977
19978
19979
19980
19981
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (large file enabled)" >&5
$as_echo "yes (large file enabled)" >&6; }

cat >>confdefs.h <<_ACEOF
#define USE_WIN32_LARGE_FILES 1
_ACEOF



      ;;
    win32_small_files)
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (large file disabled)" >&5
$as_echo "yes (large file disabled)" >&6; }

cat >>confdefs.h <<_ACEOF
#define USE_WIN32_SMALL_FILES 1
_ACEOF


























































      ;;
    *)
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      ;;
  esac







>
>








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







20025
20026
20027
20028
20029
20030
20031
20032
20033
20034
20035
20036
20037
20038
20039
20040
20041
20042
20043
20044
20045
20046
20047
20048
20049
20050
20051
20052
20053
20054
20055
20056
20057
20058
20059
20060
20061
20062
20063
20064
20065
20066
20067
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080
20081
20082
20083
20084
20085
20086
20087
20088
20089
20090
20091
20092
20093
20094
20095
20096
20097
20098
20099
20100
20101
20102
20103
20104
20105
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (large file enabled)" >&5
$as_echo "yes (large file enabled)" >&6; }

cat >>confdefs.h <<_ACEOF
#define USE_WIN32_LARGE_FILES 1
_ACEOF

      USE_WIN32_LARGE_FILES=1

      ;;
    win32_small_files)
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (large file disabled)" >&5
$as_echo "yes (large file disabled)" >&6; }

cat >>confdefs.h <<_ACEOF
#define USE_WIN32_SMALL_FILES 1
_ACEOF

      USE_WIN32_SMALL_FILES=1

      ;;
    *)
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      ;;
  esac


    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build target supports WIN32 crypto API" >&5
$as_echo_n "checking whether build target supports WIN32 crypto API... " >&6; }
  curl_win32_crypto_api="no"
  if test "$curl_cv_header_wincrypt_h" = "yes"; then
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#undef inline
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <wincrypt.h>

int main (void)
{

        HCRYPTPROV hCryptProv;
        if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
                               CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
          CryptReleaseContext(hCryptProv, 0);
        }

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :

      curl_win32_crypto_api="yes"

fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
  fi
  case "$curl_win32_crypto_api" in
    yes)
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

cat >>confdefs.h <<_ACEOF
#define USE_WIN32_CRYPTO 1
_ACEOF

      USE_WIN32_CRYPTO=1

      ;;
    *)
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      ;;
  esac
21352
21353
21354
21355
21356
21357
21358
21359
21360
21361
21362
21363
21364
21365
21366
21367
21368
21369
21370
21371
21372
21373
21374
21375
21376
21377
21378
21379
21380
21381
21382
21383
21384
21385
21386
21387
21388
21389
21390
21391
21392
21393
21394
21395
21396
21397
21398
21399
21400
21401
      LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
      ;;
  esac


CURL_NETWORK_LIBS=$LIBS

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
if ${ac_cv_header_time+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>

int main (void)
{
if ((struct tm *) 0)
return 0;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  ac_cv_header_time=yes
else
  ac_cv_header_time=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
$as_echo "$ac_cv_header_time" >&6; }
if test $ac_cv_header_time = yes; then

$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h

fi


    for ac_header in sys/types.h sys/time.h time.h
do :
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
  cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF







<
<
<
<
<
<
<
<
<
<

<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|







21476
21477
21478
21479
21480
21481
21482










21483
























21484
21485
21486
21487
21488
21489
21490
21491
      LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
      ;;
  esac


CURL_NETWORK_LIBS=$LIBS




































  for ac_header in sys/types.h sys/time.h time.h
do :
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
  cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
23094
23095
23096
23097
23098
23099
23100

23101
23102
23103
23104
23105
23106
23107
23108
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
  ipv6=yes

else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

 /* are AF_INET6 and sockaddr_in6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>







>
|







23184
23185
23186
23187
23188
23189
23190
23191
23192
23193
23194
23195
23196
23197
23198
23199
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
  ipv6=yes

else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

/* are AF_INET6 and sockaddr_in6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
23116
23117
23118
23119
23120
23121
23122

23123
23124
23125
23126
23127
23128
23129
 struct sockaddr_in6 s;
 (void)s;
 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}


_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
  ipv6=yes
else







>







23207
23208
23209
23210
23211
23212
23213
23214
23215
23216
23217
23218
23219
23220
23221
 struct sockaddr_in6 s;
 (void)s;
 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}


_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
  ipv6=yes
else
23157
23158
23159
23160
23161
23162
23163

23164
23165

23166


23167
23168
23169
23170
23171
23172
23173
23174
23175
23176
23177
23178
23179
23180

23181

23182
23183

23184

23185
23186
23187
23188
23189
23190
23191
#include <ws2tcpip.h>
#else
#include <netinet/in.h>
#if defined (__TANDEM)
# include <netinet/in6.h>
#endif
#endif

int main (void)
{

struct sockaddr_in6 s; s.sin6_scope_id = 0;


 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  have_sin6_scope_id=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
  if test "$have_sin6_scope_id" = yes; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

$as_echo "#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1" >>confdefs.h


  else

    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

  fi

fi


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if argv can be written to" >&5
$as_echo_n "checking if argv can be written to... " >&6; }

   old=$LD_LIBRARY_PATH







>


>
|
>
>





|
<
<
<
|




>
|
>


>
|
>







23249
23250
23251
23252
23253
23254
23255
23256
23257
23258
23259
23260
23261
23262
23263
23264
23265
23266
23267
23268



23269
23270
23271
23272
23273
23274
23275
23276
23277
23278
23279
23280
23281
23282
23283
23284
23285
23286
23287
23288
#include <ws2tcpip.h>
#else
#include <netinet/in.h>
#if defined (__TANDEM)
# include <netinet/in6.h>
#endif
#endif

int main (void)
{

  struct sockaddr_in6 s;
  s.sin6_scope_id = 0;

 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :




  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

$as_echo "#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1" >>confdefs.h


else

    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if argv can be written to" >&5
$as_echo_n "checking if argv can be written to... " >&6; }

   old=$LD_LIBRARY_PATH
23540
23541
23542
23543
23544
23545
23546
23547
23548
23549
23550
23551
23552
23553
23554
23555
23556




23557
23558
23559
23560
23561
23562
23563
    # --with-schannel implies --enable-sspi

$as_echo "#define USE_WINDOWS_SSPI 1" >>confdefs.h

    USE_WINDOWS_SSPI=1

    curl_sspi_msg="enabled"
    LIBS="-lcrypt32 $LIBS"
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi





OPT_SECURETRANSPORT=no

# Check whether --with-darwinssl was given.
if test "${with_darwinssl+set}" = set; then :
  withval=$with_darwinssl; OPT_SECURETRANSPORT=$withval
fi







<









>
>
>
>







23637
23638
23639
23640
23641
23642
23643

23644
23645
23646
23647
23648
23649
23650
23651
23652
23653
23654
23655
23656
23657
23658
23659
23660
23661
23662
23663
    # --with-schannel implies --enable-sspi

$as_echo "#define USE_WINDOWS_SSPI 1" >>confdefs.h

    USE_WINDOWS_SSPI=1

    curl_sspi_msg="enabled"

  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi

if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then
  LIBS="-ladvapi32 -lcrypt32 $LIBS"
fi

OPT_SECURETRANSPORT=no

# Check whether --with-darwinssl was given.
if test "${with_darwinssl+set}" = set; then :
  withval=$with_darwinssl; OPT_SECURETRANSPORT=$withval
fi
23658
23659
23660
23661
23662
23663
23664

23665
23666

23667
23668

23669

23670
23671
23672
23673
23674
23675
23676
23677
23678
23679
23680
23681
23682
23683
23684
23685
23686
    *-*-msys* | *-*-mingw*)
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdi32" >&5
$as_echo_n "checking for gdi32... " >&6; }
      my_ac_save_LIBS=$LIBS
      LIBS="-lgdi32 $LIBS"
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <windef.h>
                   #include <wingdi.h>

int main (void)
{

GdiFlush();

 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
                      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
                      LIBS=$my_ac_save_LIBS
                   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
      ;;
  esac







>
|
|
>


>
|
>





|


|
|







23758
23759
23760
23761
23762
23763
23764
23765
23766
23767
23768
23769
23770
23771
23772
23773
23774
23775
23776
23777
23778
23779
23780
23781
23782
23783
23784
23785
23786
23787
23788
23789
23790
    *-*-msys* | *-*-mingw*)
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdi32" >&5
$as_echo_n "checking for gdi32... " >&6; }
      my_ac_save_LIBS=$LIBS
      LIBS="-lgdi32 $LIBS"
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

        #include <windef.h>
        #include <wingdi.h>

int main (void)
{

          GdiFlush();

 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
           { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
           LIBS=$my_ac_save_LIBS
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
      ;;
  esac
23921
23922
23923
23924
23925
23926
23927

23928

23929
23930
23931
23932
23933
23934
23935
23936
if test "x$ac_cv_lib_crypto_HMAC_Update" = xyes; then :

     HAVECRYPTO="yes"
     LIBS="-lcrypto $LIBS"

else


     LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"

     if test "$PKGCONFIG" = "no" ; then
       # only set this if pkg-config wasn't used
       CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
     fi
     # Linking previously failed, try extra paths from --with-ssl or pkg-config.
     # Use a different function name to avoid reusing the earlier cached result.
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HMAC_Init_ex in -lcrypto" >&5
$as_echo_n "checking for HMAC_Init_ex in -lcrypto... " >&6; }







>
|
>
|







24025
24026
24027
24028
24029
24030
24031
24032
24033
24034
24035
24036
24037
24038
24039
24040
24041
24042
if test "x$ac_cv_lib_crypto_HMAC_Update" = xyes; then :

     HAVECRYPTO="yes"
     LIBS="-lcrypto $LIBS"

else

     if test -n "$LIB_OPENSSL" ; then
       LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
     fi
     if test "$PKGCONFIG" = "no" -a -n "$PREFIX_OPENSSL" ; then
       # only set this if pkg-config wasn't used
       CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
     fi
     # Linking previously failed, try extra paths from --with-ssl or pkg-config.
     # Use a different function name to avoid reusing the earlier cached result.
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HMAC_Init_ex in -lcrypto" >&5
$as_echo_n "checking for HMAC_Init_ex in -lcrypto... " >&6; }
24001
24002
24003
24004
24005
24006
24007

24008
24009
24010
24011
24012
24013
24014
$as_echo "no" >&6; }

         { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl and -lpthread" >&5
$as_echo_n "checking OpenSSL linking with -ldl and -lpthread... " >&6; }
         LIBS="$CLEANLIBS -lcrypto -ldl -lpthread"
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


           #include <openssl/err.h>

int main (void)
{

           ERR_clear_error();







>







24107
24108
24109
24110
24111
24112
24113
24114
24115
24116
24117
24118
24119
24120
24121
$as_echo "no" >&6; }

         { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl and -lpthread" >&5
$as_echo_n "checking OpenSSL linking with -ldl and -lpthread... " >&6; }
         LIBS="$CLEANLIBS -lcrypto -ldl -lpthread"
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


           #include <openssl/err.h>

int main (void)
{

           ERR_clear_error();
25456
25457
25458
25459
25460
25461
25462
25463
25464
25465
25466
25467
25468
25469
25470
25471
25472
25473
25474
25475
25476
25477
25478
25479
25480
25481
25482
25483
25484
25485
25486
25487
25488
25489
25490
25491
25492
25493
25494
25495
25496
25497
25498
25499
25500
25501
25502
25503
25504
25505
25506
25507
25508
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_nettle_MD5Init" >&5
$as_echo "$ac_cv_lib_gnutls_nettle_MD5Init" >&6; }
if test "x$ac_cv_lib_gnutls_nettle_MD5Init" = xyes; then :
   USE_GNUTLS_NETTLE=1
fi

  if test "$USE_GNUTLS_NETTLE" = ""; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcry_control in -lgnutls" >&5
$as_echo_n "checking for gcry_control in -lgnutls... " >&6; }
if ${ac_cv_lib_gnutls_gcry_control+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lgnutls  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char gcry_control ();
int main (void)
{
return gcry_control ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_gnutls_gcry_control=yes
else
  ac_cv_lib_gnutls_gcry_control=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_gcry_control" >&5
$as_echo "$ac_cv_lib_gnutls_gcry_control" >&6; }
if test "x$ac_cv_lib_gnutls_gcry_control" = xyes; then :
   USE_GNUTLS_NETTLE=0
fi

  fi
  # If not, try linking directly to both of them to see if they are available
  if test "$USE_GNUTLS_NETTLE" = ""; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nettle_MD5Init in -lnettle" >&5
$as_echo_n "checking for nettle_MD5Init in -lnettle... " >&6; }
if ${ac_cv_lib_nettle_nettle_MD5Init+:} false; then :
  $as_echo_n "(cached) " >&6
else







<
<
<
<
<
<
<
<
<
<

<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







25563
25564
25565
25566
25567
25568
25569










25570




























25571
25572
25573
25574
25575
25576
25577
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_nettle_MD5Init" >&5
$as_echo "$ac_cv_lib_gnutls_nettle_MD5Init" >&6; }
if test "x$ac_cv_lib_gnutls_nettle_MD5Init" = xyes; then :
   USE_GNUTLS_NETTLE=1
fi








































  # If not, try linking directly to both of them to see if they are available
  if test "$USE_GNUTLS_NETTLE" = ""; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nettle_MD5Init in -lnettle" >&5
$as_echo_n "checking for nettle_MD5Init in -lnettle... " >&6; }
if ${ac_cv_lib_nettle_nettle_MD5Init+:} false; then :
  $as_echo_n "(cached) " >&6
else
25536
25537
25538
25539
25540
25541
25542
25543
25544
25545
25546
25547
25548
25549
25550
25551
25552
25553
25554
25555
25556
25557
25558
25559
25560
25561
25562
25563
25564
25565
25566
25567
25568
25569
25570
25571
25572
25573
25574
25575
25576
25577
25578
25579
25580
25581
25582
25583
25584
25585
25586
25587
25588
25589
25590
25591
25592
25593
25594
25595
25596
25597
25598
25599
25600
$as_echo "$ac_cv_lib_nettle_nettle_MD5Init" >&6; }
if test "x$ac_cv_lib_nettle_nettle_MD5Init" = xyes; then :
   USE_GNUTLS_NETTLE=1
fi

  fi
  if test "$USE_GNUTLS_NETTLE" = ""; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcry_control in -lgcrypt" >&5
$as_echo_n "checking for gcry_control in -lgcrypt... " >&6; }
if ${ac_cv_lib_gcrypt_gcry_control+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lgcrypt  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char gcry_control ();
int main (void)
{
return gcry_control ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_gcrypt_gcry_control=yes
else
  ac_cv_lib_gcrypt_gcry_control=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gcrypt_gcry_control" >&5
$as_echo "$ac_cv_lib_gcrypt_gcry_control" >&6; }
if test "x$ac_cv_lib_gcrypt_gcry_control" = xyes; then :
   USE_GNUTLS_NETTLE=0
fi

  fi
  if test "$USE_GNUTLS_NETTLE" = ""; then
    as_fn_error $? "GnuTLS found, but neither gcrypt nor nettle found" "$LINENO" 5
  fi
  if test "$USE_GNUTLS_NETTLE" = "1"; then

$as_echo "#define USE_GNUTLS_NETTLE 1" >>confdefs.h

    USE_GNUTLS_NETTLE=1

    LIBS="-lnettle $LIBS"
  else
    LIBS="-lgcrypt $LIBS"
  fi
fi

if test "$GNUTLS_ENABLED" = "1"; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls_srp_verifier in -lgnutls" >&5
$as_echo_n "checking for gnutls_srp_verifier in -lgnutls... " >&6; }
if ${ac_cv_lib_gnutls_gnutls_srp_verifier+:} false; then :
  $as_echo_n "(cached) " >&6







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|

<
<
<
<
<
<
|
<
<
<







25605
25606
25607
25608
25609
25610
25611







































25612
25613






25614



25615
25616
25617
25618
25619
25620
25621
$as_echo "$ac_cv_lib_nettle_nettle_MD5Init" >&6; }
if test "x$ac_cv_lib_nettle_nettle_MD5Init" = xyes; then :
   USE_GNUTLS_NETTLE=1
fi

  fi
  if test "$USE_GNUTLS_NETTLE" = ""; then







































    as_fn_error $? "GnuTLS found, but nettle was not found" "$LINENO" 5
  fi






  LIBS="-lnettle $LIBS"



fi

if test "$GNUTLS_ENABLED" = "1"; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls_srp_verifier in -lgnutls" >&5
$as_echo_n "checking for gnutls_srp_verifier in -lgnutls... " >&6; }
if ${ac_cv_lib_gnutls_gnutls_srp_verifier+:} false; then :
  $as_echo_n "(cached) " >&6
26489
26490
26491
26492
26493
26494
26495































































































































































26496
26497
26498
26499
26500
26501
26502
      fi
    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

































































































































































OPT_NSS=no


# Check whether --with-nss was given.
if test "${with_nss+set}" = set; then :
  withval=$with_nss; OPT_NSS=$withval







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







26510
26511
26512
26513
26514
26515
26516
26517
26518
26519
26520
26521
26522
26523
26524
26525
26526
26527
26528
26529
26530
26531
26532
26533
26534
26535
26536
26537
26538
26539
26540
26541
26542
26543
26544
26545
26546
26547
26548
26549
26550
26551
26552
26553
26554
26555
26556
26557
26558
26559
26560
26561
26562
26563
26564
26565
26566
26567
26568
26569
26570
26571
26572
26573
26574
26575
26576
26577
26578
26579
26580
26581
26582
26583
26584
26585
26586
26587
26588
26589
26590
26591
26592
26593
26594
26595
26596
26597
26598
26599
26600
26601
26602
26603
26604
26605
26606
26607
26608
26609
26610
26611
26612
26613
26614
26615
26616
26617
26618
26619
26620
26621
26622
26623
26624
26625
26626
26627
26628
26629
26630
26631
26632
26633
26634
26635
26636
26637
26638
26639
26640
26641
26642
26643
26644
26645
26646
26647
26648
26649
26650
26651
26652
26653
26654
26655
26656
26657
26658
26659
26660
26661
26662
26663
26664
26665
26666
26667
26668
26669
26670
26671
26672
26673
26674
26675
26676
26677
26678
26679
26680
26681
26682
      fi
    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi


OPT_RUSTLS=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS

# Check whether --with-rustls was given.
if test "${with_rustls+set}" = set; then :
  withval=$with_rustls; OPT_RUSTLS=$withval
fi


if test -z "$ssl_backends" -o "x$OPT_RUSTLS" != xno; then
  ssl_msg=

  if test X"$OPT_RUSTLS" != Xno; then

    if test "$OPT_RUSTLS" = "yes"; then
      OPT_RUSTLS=""
    fi

    if test -z "$OPT_RUSTLS" ; then

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rustls_client_session_read in -lcrustls" >&5
$as_echo_n "checking for rustls_client_session_read in -lcrustls... " >&6; }
if ${ac_cv_lib_crustls_rustls_client_session_read+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lcrustls -lpthread -ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char rustls_client_session_read ();
int main (void)
{
return rustls_client_session_read ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_crustls_rustls_client_session_read=yes
else
  ac_cv_lib_crustls_rustls_client_session_read=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crustls_rustls_client_session_read" >&5
$as_echo "$ac_cv_lib_crustls_rustls_client_session_read" >&6; }
if test "x$ac_cv_lib_crustls_rustls_client_session_read" = xyes; then :


$as_echo "#define USE_RUSTLS 1" >>confdefs.h

         USE_RUSTLS=1

         RUSTLS_ENABLED=1
         USE_RUSTLS="yes"
         ssl_msg="rustls"
	 test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

fi

    fi

    addld=""
    addlib="-lpthread"
    addcflags=""
    bearssllib=""

    if test "x$USE_RUSTLS" != "xyes"; then
            addld=-L$OPT_RUSTLS/lib$libsuff
      addcflags=-I$OPT_RUSTLS/include
      rustlslib=$OPT_RUSTLS/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rustls_client_session_read in -lcrustls" >&5
$as_echo_n "checking for rustls_client_session_read in -lcrustls... " >&6; }
if ${ac_cv_lib_crustls_rustls_client_session_read+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lcrustls -lpthread -ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char rustls_client_session_read ();
int main (void)
{
return rustls_client_session_read ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_crustls_rustls_client_session_read=yes
else
  ac_cv_lib_crustls_rustls_client_session_read=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crustls_rustls_client_session_read" >&5
$as_echo "$ac_cv_lib_crustls_rustls_client_session_read" >&6; }
if test "x$ac_cv_lib_crustls_rustls_client_session_read" = xyes; then :


$as_echo "#define USE_RUSTLS 1" >>confdefs.h

       USE_RUSTLS=1

       RUSTLS_ENABLED=1
       USE_RUSTLS="yes"
       ssl_msg="rustls"
       test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

else
  as_fn_error $? "--with-rustls was specified but could not find rustls." "$LINENO" 5
fi

    fi

    if test "x$USE_RUSTLS" = "xyes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: detected rustls" >&5
$as_echo "$as_me: detected rustls" >&6;}
      check_for_ca_bundle=1

      LIBS="-lcrustls -lpthread -ldl $LIBS"

      if test -n "$rustlslib"; then
                                        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$rustlslib"
          export CURL_LIBRARY_PATH
          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $rustlslib to CURL_LIBRARY_PATH" >&5
$as_echo "$as_me: Added $rustlslib to CURL_LIBRARY_PATH" >&6;}
        fi
      fi
    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi


OPT_NSS=no


# Check whether --with-nss was given.
if test "${with_nss+set}" = set; then :
  withval=$with_nss; OPT_NSS=$withval
26926
26927
26928
26929
26930
26931
26932
26933

26934
26935
26936
26937
26938
26939
26940
      fi

    fi
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED" in

x)
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
$as_echo "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this." >&5
$as_echo "$as_me: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this." >&2;}
  ;;
x1)







|
>







27106
27107
27108
27109
27110
27111
27112
27113
27114
27115
27116
27117
27118
27119
27120
27121
      fi

    fi
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED$RUSTLS_ENABLED"
in
x)
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
$as_echo "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this." >&5
$as_echo "$as_me: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this." >&2;}
  ;;
x1)
27220
27221
27222
27223
27224
27225
27226




















































































27227
27228
27229
27230
27231
27232
27233
  USE_LIBPSL_TRUE=
  USE_LIBPSL_FALSE='#'
else
  USE_LIBPSL_TRUE='#'
  USE_LIBPSL_FALSE=
fi























































































OPT_LIBMETALINK=no


# Check whether --with-libmetalink was given.
if test "${with_libmetalink+set}" = set; then :







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







27401
27402
27403
27404
27405
27406
27407
27408
27409
27410
27411
27412
27413
27414
27415
27416
27417
27418
27419
27420
27421
27422
27423
27424
27425
27426
27427
27428
27429
27430
27431
27432
27433
27434
27435
27436
27437
27438
27439
27440
27441
27442
27443
27444
27445
27446
27447
27448
27449
27450
27451
27452
27453
27454
27455
27456
27457
27458
27459
27460
27461
27462
27463
27464
27465
27466
27467
27468
27469
27470
27471
27472
27473
27474
27475
27476
27477
27478
27479
27480
27481
27482
27483
27484
27485
27486
27487
27488
27489
27490
27491
27492
27493
27494
27495
27496
27497
27498
  USE_LIBPSL_TRUE=
  USE_LIBPSL_FALSE='#'
else
  USE_LIBPSL_TRUE='#'
  USE_LIBPSL_FALSE=
fi





# Check whether --with-libgsasl was given.
if test "${with_libgsasl+set}" = set; then :
  withval=$with_libgsasl; with_libgsasl=$withval
else
  with_libgsasl=yes
fi

if test $with_libgsasl != "no"; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsasl_init" >&5
$as_echo_n "checking for library containing gsasl_init... " >&6; }
if ${ac_cv_search_gsasl_init+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char gsasl_init ();
int main (void)
{
return gsasl_init ();
 ;
 return 0;
}
_ACEOF
for ac_lib in '' gsasl; do
  if test -z "$ac_lib"; then
    ac_res="none required"
  else
    ac_res=-l$ac_lib
    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
  fi
  if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_search_gsasl_init=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext
  if ${ac_cv_search_gsasl_init+:} false; then :
  break
fi
done
if ${ac_cv_search_gsasl_init+:} false; then :

else
  ac_cv_search_gsasl_init=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsasl_init" >&5
$as_echo "$ac_cv_search_gsasl_init" >&6; }
ac_res=$ac_cv_search_gsasl_init
if test "$ac_res" != no; then :
  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
  curl_gsasl_msg="enabled";

$as_echo "#define USE_GSASL 1" >>confdefs.h


else
  curl_gsasl_msg="no      (libgsasl not found)";
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libgsasl was not found" >&5
$as_echo "$as_me: WARNING: libgsasl was not found" >&2;}


fi

fi
 if test "$curl_gsasl_msg" = "enabled"; then
  USE_GSASL_TRUE=
  USE_GSASL_FALSE='#'
else
  USE_GSASL_TRUE='#'
  USE_GSASL_FALSE=
fi



OPT_LIBMETALINK=no


# Check whether --with-libmetalink was given.
if test "${with_libmetalink+set}" = set; then :
30347
30348
30349
30350
30351
30352
30353
30354
30355
30356
30357
30358
30359
30360
30361
                  as_fn_error $? "--with-nghttp3 was specified but could not find nghttp3 pkg-config file." "$LINENO" 5
    fi
  fi

fi


OPT_QUICHE="yes"

if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
  # without HTTP or with ngtcp2, quiche is no use
  OPT_QUICHE="no"
fi









|







30612
30613
30614
30615
30616
30617
30618
30619
30620
30621
30622
30623
30624
30625
30626
                  as_fn_error $? "--with-nghttp3 was specified but could not find nghttp3 pkg-config file." "$LINENO" 5
    fi
  fi

fi


OPT_QUICHE="no"

if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
  # without HTTP or with ngtcp2, quiche is no use
  OPT_QUICHE="no"
fi


30616
30617
30618
30619
30620
30621
30622
30623
30624
30625
30626
30627
30628
30629
30630
30631
30632
30633
30634
30635
30636
30637
30638
30639
30640
30641
30642
30643
30644
30645
30646
30647
30648
30649
$as_echo "$as_me: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&6;}
fi

done


else
          LDFLAGS=$CLEANLDFLAGS
        CPPFLAGS=$CLEANCPPFLAGS
        LIBS=$CLEANLIBS

fi

  else
        if test X"$want_quiche" != Xdefault; then
                  as_fn_error $? "--with-quiche was specified but could not find quiche pkg-config file." "$LINENO" 5
    fi
  fi
fi


OPT_HYPER="yes"

if test "x$disable_http" = "xyes"; then
  # without HTTP, hyper is of no use
  OPT_HYPER="no"
fi


# Check whether --with-hyper was given.
if test "${with_hyper+set}" = set; then :
  withval=$with_hyper; OPT_HYPER=$withval
fi








|
<
<











<
<
<
<
|
<







30881
30882
30883
30884
30885
30886
30887
30888


30889
30890
30891
30892
30893
30894
30895
30896
30897
30898
30899




30900

30901
30902
30903
30904
30905
30906
30907
$as_echo "$as_me: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&6;}
fi

done


else
          as_fn_error $? "couldn't use quiche" "$LINENO" 5



fi

  else
        if test X"$want_quiche" != Xdefault; then
                  as_fn_error $? "--with-quiche was specified but could not find quiche pkg-config file." "$LINENO" 5
    fi
  fi
fi






OPT_HYPER="no"



# Check whether --with-hyper was given.
if test "${with_hyper+set}" = set; then :
  withval=$with_hyper; OPT_HYPER=$withval
fi

30658
30659
30660
30661
30662
30663
30664




30665
30666
30667
30668
30669
30670
30671
  *)
        want_hyper="yes"
    want_hyper_path="$withval"
    ;;
esac

if test X"$want_hyper" != Xno; then




    CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"


    if test -n "$PKG_CONFIG"; then
      PKGCONFIG="$PKG_CONFIG"







>
>
>
>







30916
30917
30918
30919
30920
30921
30922
30923
30924
30925
30926
30927
30928
30929
30930
30931
30932
30933
  *)
        want_hyper="yes"
    want_hyper_path="$withval"
    ;;
esac

if test X"$want_hyper" != Xno; then
  if test "x$disable_http" = "xyes"; then
    as_fn_error $? "--with-hyper is not compatible with --disable-http" "$LINENO" 5
  fi

    CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"


    if test -n "$PKG_CONFIG"; then
      PKGCONFIG="$PKG_CONFIG"
30811
30812
30813
30814
30815
30816
30817
30818
30819
30820
30821
30822
30823
30824
30825
    if test -n "$want_hyper_path"; then
      PKG_CONFIG_LIBDIR="$want_hyper_path"
      export PKG_CONFIG_LIBDIR
    fi

      $PKGCONFIG --libs-only-L hyper`
  else
        LIB_HYPER="-lhyper"
    if test X"$want_hyper" != Xdefault; then
      CPP_HYPER=-I"$want_hyper_path/capi/include"
      LD_HYPER="-L$want_hyper_path/target/debug"
    fi
  fi
  if test -n "$LIB_HYPER"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: -l is $LIB_HYPER" >&5







|







31073
31074
31075
31076
31077
31078
31079
31080
31081
31082
31083
31084
31085
31086
31087
    if test -n "$want_hyper_path"; then
      PKG_CONFIG_LIBDIR="$want_hyper_path"
      export PKG_CONFIG_LIBDIR
    fi

      $PKGCONFIG --libs-only-L hyper`
  else
        LIB_HYPER="-lhyper -ldl -lpthread -lm"
    if test X"$want_hyper" != Xdefault; then
      CPP_HYPER=-I"$want_hyper_path/capi/include"
      LD_HYPER="-L$want_hyper_path/target/debug"
    fi
  fi
  if test -n "$LIB_HYPER"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: -l is $LIB_HYPER" >&5
30896
30897
30898
30899
30900
30901
30902
30903
30904
30905
30906
30907
30908
30909
30910
30911
30912
$as_echo "$as_me: Added $DIR_HYPER to CURL_LIBRARY_PATH" >&6;}
fi

done


else
          LDFLAGS=$CLEANLDFLAGS
        CPPFLAGS=$CLEANCPPFLAGS
        LIBS=$CLEANLIBS

fi

  fi
fi









|
<
<







31158
31159
31160
31161
31162
31163
31164
31165


31166
31167
31168
31169
31170
31171
31172
$as_echo "$as_me: Added $DIR_HYPER to CURL_LIBRARY_PATH" >&6;}
fi

done


else
  as_fn_error $? "--with-hyper but hyper was not found. See docs/HYPER.md." "$LINENO" 5



fi

  fi
fi


31077
31078
31079
31080
31081
31082
31083
31084
31085
31086
31087
31088
31089
31090
31091
31092
31093
31094
31095
31096
31097
31098
31099
31100
31101
31102
31103
31104
31105
31106
31107
31108
31109
31110
31111
31112
31113
31114
31115
31116
31117
31118
31119
31120
31121
31122
31123
31124
31125
31126
31127
31128
31129
31130
31131
31132
31133
31134
31135
31136
31137
31138
31139
31140
31141
31142
31143
31144
31145
31146
31147
31148
31149
31150
31151
31152
31153
31154
31155
31156
31157
31158
31159
31160
31161
31162
31163
31164
31165
31166
31167
31168
31169
31170
31171
31172
31173
31174
31175
31176
31177
31178
31179
31180
31181
31182
31183
31184
31185
31186
31187
31188
31189
31190
31191
31192
31193
31194
31195
31196
31197
31198
31199
31200
31201
31202
31203

    ;;
  *)
        FISH_FUNCTIONS_DIR="$withval"

    ;;
esac


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
if ${ac_cv_header_stdc+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>

int main (void)
{

 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  ac_cv_header_stdc=yes
else
  ac_cv_header_stdc=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext

if test $ac_cv_header_stdc = yes; then
  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <string.h>

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "memchr" >/dev/null 2>&1; then :

else
  ac_cv_header_stdc=no
fi
rm -f conftest*

fi

if test $ac_cv_header_stdc = yes; then
  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <stdlib.h>

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "free" >/dev/null 2>&1; then :

else
  ac_cv_header_stdc=no
fi
rm -f conftest*

fi

if test $ac_cv_header_stdc = yes; then
  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
  if test "$cross_compiling" = yes; then :
  :
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <ctype.h>
#include <stdlib.h>
#if ((' ' & 0x0FF) == 0x020)
# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#else
# define ISLOWER(c) \
		   (('a' <= (c) && (c) <= 'i') \
		     || ('j' <= (c) && (c) <= 'r') \
		     || ('s' <= (c) && (c) <= 'z'))
# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
#endif

#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int
main ()
{
  int i;
  for (i = 0; i < 256; i++)
    if (XOR (islower (i), ISLOWER (i))
	|| toupper (i) != TOUPPER (i))
      return 2;
  return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :

else
  ac_cv_header_stdc=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
  conftest.$ac_objext conftest.beam conftest.$ac_ext
fi

fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
$as_echo "$ac_cv_header_stdc" >&6; }
if test $ac_cv_header_stdc = yes; then

$as_echo "#define STDC_HEADERS 1" >>confdefs.h

fi



  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for malloc.h" >&5
$as_echo_n "checking for malloc.h... " >&6; }
if ${curl_cv_header_malloc_h+:} false; then :
  $as_echo_n "(cached) " >&6
else







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







31337
31338
31339
31340
31341
31342
31343

















































































































31344
31345
31346
31347
31348
31349
31350

    ;;
  *)
        FISH_FUNCTIONS_DIR="$withval"

    ;;
esac



















































































































  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for malloc.h" >&5
$as_echo_n "checking for malloc.h... " >&6; }
if ${curl_cv_header_malloc_h+:} false; then :
  $as_echo_n "(cached) " >&6
else
31649
31650
31651
31652
31653
31654
31655
31656
31657
31658
31659
31660
31661
31662
31663
31664
31665
31666
31667
31668
31669
31670
31671
31672
31673
31674
31675
31676
31677
31678
31679
31680
31681
31682
31683
31684
31685
31686
31687
31688
31689
31690
31691
31692
31693
31694
31695
31696
31697
31698

cat >>confdefs.h <<_ACEOF
#define size_t unsigned int
_ACEOF

fi

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
if ${ac_cv_header_time+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>

int main (void)
{
if ((struct tm *) 0)
return 0;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  ac_cv_header_time=yes
else
  ac_cv_header_time=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
$as_echo "$ac_cv_header_time" >&6; }
if test $ac_cv_header_time = yes; then

$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h

fi


        for ac_header in sys/types.h sys/time.h time.h sys/socket.h
do :
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
  cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF







<
<
<
<
<
<
<
<
<
<

<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|







31796
31797
31798
31799
31800
31801
31802










31803

31804






















31805
31806
31807
31808
31809
31810
31811
31812

cat >>confdefs.h <<_ACEOF
#define size_t unsigned int
_ACEOF

fi




































      for ac_header in sys/types.h sys/time.h time.h sys/socket.h
do :
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
  cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
32565
32566
32567
32568
32569
32570
32571
32572
32573
32574
32575
32576
32577
32578
32579
32580
32581
32582
32583
32584
32585
32586
32587
32588
32589
32590
32591
32592
32593
32594
32595
32596
32597
32598
32599
32600
32601
32602
32603
32604
32605
32606
32607
32608
32609
32610
32611
      if test "$curl_cv_sig_atomic_t_volatile" = "yes"; then

$as_echo "#define HAVE_SIG_ATOMIC_T_VOLATILE 1" >>confdefs.h

      fi
      ;;
  esac


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
$as_echo_n "checking return type of signal handlers... " >&6; }
if ${ac_cv_type_signal+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <sys/types.h>
#include <signal.h>

int main (void)
{
return *(signal (0, 0)) (0) == 1;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  ac_cv_type_signal=int
else
  ac_cv_type_signal=void
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
$as_echo "$ac_cv_type_signal" >&6; }

cat >>confdefs.h <<_ACEOF
#define RETSIGTYPE $ac_cv_type_signal
_ACEOF




    for ac_header in sys/select.h sys/socket.h
do :
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







32679
32680
32681
32682
32683
32684
32685

































32686
32687
32688
32689
32690
32691
32692
      if test "$curl_cv_sig_atomic_t_volatile" = "yes"; then

$as_echo "#define HAVE_SIG_ATOMIC_T_VOLATILE 1" >>confdefs.h

      fi
      ;;
  esac




































    for ac_header in sys/select.h sys/socket.h
do :
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
42486
42487
42488
42489
42490
42491
42492
42493
42494
42495
42496
42497
42498
42499
42500
42501
42502
42503
42504
42505
42506
42507
42508
42509
42510
42511
42512
42513
42514
42515
42516
42517
42518
42519
42520
42521
42522
42523
42524
42525
42526
42527
42528
42529
42530
42531
42532
42533
42534
42535
42536
42537
42538
42539
42540
42541
42542
42543
42544
42545
42546
42547
42548
42549
42550
42551
42552
42553
42554
42555
42556
42557
42558
42559
42560
42561
42562
42563
42564
42565
42566
42567
42568
42569
42570
42571
42572
42573
42574
42575
42576
42577
42578
42579
42580
42581
42582
42583
42584
42585
42586
42587
42588
42589
42590
42591
42592
42593
42594
42595
42596
42597
42598
42599
42600
42601
42602
42603
42604
42605
42606
42607
42608
42609
42610
42611
42612
42613
42614
42615
42616
42617
42618
42619
42620
42621
42622
42623
42624
42625
42626
42627
42628
42629
42630
42631
42632
42633
42634
42635
42636
42637
42638
42639
42640
42641
42642
42643
42644
42645
42646
42647
42648
    curl_cv_func_stricmp="yes"
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
    curl_cv_func_stricmp="no"
  fi


    #
  tst_links_strncasecmp="unknown"
  tst_proto_strncasecmp="unknown"
  tst_compi_strncasecmp="unknown"
  tst_allow_strncasecmp="unknown"
  #
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if strncasecmp can be linked" >&5
$as_echo_n "checking if strncasecmp can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define strncasecmp innocuous_strncasecmp
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef strncasecmp
#ifdef __cplusplus
extern "C"
#endif
char strncasecmp ();
#if defined __stub_strncasecmp || defined __stub___strncasecmp
choke me
#endif

int main (void)
{
return strncasecmp ();
 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"; then :

    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
    tst_links_strncasecmp="yes"

else

    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
    tst_links_strncasecmp="no"

fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_strncasecmp" = "yes"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if strncasecmp is prototyped" >&5
$as_echo_n "checking if strncasecmp is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_string

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "strncasecmp" >/dev/null 2>&1; then :

      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
      tst_proto_strncasecmp="yes"

else

      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      tst_proto_strncasecmp="no"

fi
rm -f conftest*

  fi
  #
  if test "$tst_proto_strncasecmp" = "yes"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if strncasecmp is compilable" >&5
$as_echo_n "checking if strncasecmp is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_string

int main (void)
{

        if(0 != strncasecmp(0, 0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :

      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
      tst_compi_strncasecmp="yes"

else

      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      tst_compi_strncasecmp="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
  fi
  #
  if test "$tst_compi_strncasecmp" = "yes"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if strncasecmp usage allowed" >&5
$as_echo_n "checking if strncasecmp usage allowed... " >&6; }
    if test "x$curl_disallow_strncasecmp" != "xyes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
      tst_allow_strncasecmp="yes"
    else
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      tst_allow_strncasecmp="no"
    fi
  fi
  #
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if strncasecmp might be used" >&5
$as_echo_n "checking if strncasecmp might be used... " >&6; }
  if test "$tst_links_strncasecmp" = "yes" &&
     test "$tst_proto_strncasecmp" = "yes" &&
     test "$tst_compi_strncasecmp" = "yes" &&
     test "$tst_allow_strncasecmp" = "yes"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

cat >>confdefs.h <<_ACEOF
#define HAVE_STRNCASECMP 1
_ACEOF

    curl_cv_func_strncasecmp="yes"
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
    curl_cv_func_strncasecmp="no"
  fi


    #
  tst_links_strncmpi="unknown"
  tst_proto_strncmpi="unknown"
  tst_compi_strncmpi="unknown"
  tst_allow_strncmpi="unknown"
  #







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







42567
42568
42569
42570
42571
42572
42573





















































































































































42574
42575
42576
42577
42578
42579
42580
    curl_cv_func_stricmp="yes"
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
    curl_cv_func_stricmp="no"
  fi























































































































































    #
  tst_links_strncmpi="unknown"
  tst_proto_strncmpi="unknown"
  tst_compi_strncmpi="unknown"
  tst_allow_strncmpi="unknown"
  #
45085
45086
45087
45088
45089
45090
45091




45092
45093
45094
45095
45096
45097
45098
45099
45100
45101
45102
45103
45104
45105
45106
45107
45108
45109


45110
45111
45112
45113

45114





45115
45116
45117
45118
45119
45120
45121
if test "x$HAVE_GSSAPI" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
fi

if test "x$curl_psl_msg" = "xenabled"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
fi





if test "x$enable_altsvc" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc"
fi
if test "x$enable_hsts" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
fi



if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
  if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
      -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
      -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1" \

      -o "x$WOLFSSL_NTLM" = "x1"; then





    SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"

    if test "x$CURL_DISABLE_HTTP" != "x1" -a \
        "x$NTLM_WB_ENABLED" = "x1"; then
      SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
    fi
  fi







>
>
>
>


















>
>

|
|
|
>

>
>
>
>
>







45017
45018
45019
45020
45021
45022
45023
45024
45025
45026
45027
45028
45029
45030
45031
45032
45033
45034
45035
45036
45037
45038
45039
45040
45041
45042
45043
45044
45045
45046
45047
45048
45049
45050
45051
45052
45053
45054
45055
45056
45057
45058
45059
45060
45061
45062
45063
45064
45065
if test "x$HAVE_GSSAPI" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
fi

if test "x$curl_psl_msg" = "xenabled"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
fi

if test "x$curl_gsasl_msg" = "xenabled"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES GSASL"
fi

if test "x$enable_altsvc" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc"
fi
if test "x$enable_hsts" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
fi

use_curl_ntlm_core=no

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
  if test "x$OPENSSL_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
      -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
      -o "x$SECURETRANSPORT_ENABLED" = "x1" \
      -o "x$USE_WIN32_CRYPTO" = "x1" \
      -o "x$WOLFSSL_NTLM" = "x1"; then
    use_curl_ntlm_core=yes
  fi

  if test "x$use_curl_ntlm_core" = "xyes" \
      -o "x$USE_WINDOWS_SSPI" = "x1"; then
    SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"

    if test "x$CURL_DISABLE_HTTP" != "x1" -a \
        "x$NTLM_WB_ENABLED" = "x1"; then
      SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
    fi
  fi
45143
45144
45145
45146
45147
45148
45149







45150
45151
45152
45153
45154
45155
45156
    SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
  fi
fi

if test "x$ECH_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES ECH"
fi








SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '`


if test "x$CURL_DISABLE_HTTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
  if test "x$SSL_ENABLED" = "x1"; then







>
>
>
>
>
>
>







45087
45088
45089
45090
45091
45092
45093
45094
45095
45096
45097
45098
45099
45100
45101
45102
45103
45104
45105
45106
45107
    SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
  fi
fi

if test "x$ECH_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES ECH"
fi

if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
  if test ${ac_cv_sizeof_off_t} -gt 4 -o \
     "$curl_win32_file_api" = "win32_large_files"; then
    SUPPORT_FEATURES="$SUPPORT_FEATURES Largefile"
  fi
fi

SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '`


if test "x$CURL_DISABLE_HTTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
  if test "x$SSL_ENABLED" = "x1"; then
45202
45203
45204
45205
45206
45207
45208
45209
45210
45211
45212
45213
45214
45215
45216
45217
45218
45219
45220
if test "x$CURL_DISABLE_IMAP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
  fi
fi
if test "x$CURL_DISABLE_SMB" != "x1" \
    -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
    -a \( "x$OPENSSL_ENABLED" = "x1" \
      -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
      -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1" \
      -o "x$WOLFSSL_NTLM" = "x1" \); then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
  fi
fi
if test "x$CURL_DISABLE_SMTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"







<
<
<
<
|







45153
45154
45155
45156
45157
45158
45159




45160
45161
45162
45163
45164
45165
45166
45167
if test "x$CURL_DISABLE_IMAP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
  fi
fi
if test "x$CURL_DISABLE_SMB" != "x1" \




    -a "x$use_curl_ntlm_core" = "xyes"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
  fi
fi
if test "x$CURL_DISABLE_SMTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
45613
45614
45615
45616
45617
45618
45619




45620
45621
45622
45623
45624
45625
45626
  as_fn_error $? "conditional \"BUILD_STUB_GSS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_LIBPSL_TRUE}" && test -z "${USE_LIBPSL_FALSE}"; then
  as_fn_error $? "conditional \"USE_LIBPSL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi




if test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE}" && test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE}"; then
  as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_MANUAL_TRUE}" && test -z "${USE_MANUAL_FALSE}"; then
  as_fn_error $? "conditional \"USE_MANUAL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5







>
>
>
>







45560
45561
45562
45563
45564
45565
45566
45567
45568
45569
45570
45571
45572
45573
45574
45575
45576
45577
  as_fn_error $? "conditional \"BUILD_STUB_GSS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_LIBPSL_TRUE}" && test -z "${USE_LIBPSL_FALSE}"; then
  as_fn_error $? "conditional \"USE_LIBPSL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GSASL_TRUE}" && test -z "${USE_GSASL_FALSE}"; then
  as_fn_error $? "conditional \"USE_GSASL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE}" && test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE}"; then
  as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_MANUAL_TRUE}" && test -z "${USE_MANUAL_FALSE}"; then
  as_fn_error $? "conditional \"USE_MANUAL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
48106
48107
48108
48109
48110
48111
48112

48113
48114
48115
48116
48117
48118
48119
  curl version:     ${CURLVERSION}
  SSL:              ${curl_ssl_msg}
  SSH:              ${curl_ssh_msg}
  zlib:             ${curl_zlib_msg}
  brotli:           ${curl_brotli_msg}
  zstd:             ${curl_zstd_msg}
  GSS-API:          ${curl_gss_msg}

  TLS-SRP:          ${curl_tls_srp_msg}
  resolver:         ${curl_res_msg}
  IPv6:             ${curl_ipv6_msg}
  Unix sockets:     ${curl_unix_sockets_msg}
  IDN:              ${curl_idn_msg}
  Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
  Built-in manual:  ${curl_manual_msg}







>







48057
48058
48059
48060
48061
48062
48063
48064
48065
48066
48067
48068
48069
48070
48071
  curl version:     ${CURLVERSION}
  SSL:              ${curl_ssl_msg}
  SSH:              ${curl_ssh_msg}
  zlib:             ${curl_zlib_msg}
  brotli:           ${curl_brotli_msg}
  zstd:             ${curl_zstd_msg}
  GSS-API:          ${curl_gss_msg}
  GSASL:            ${curl_gsasl_msg}
  TLS-SRP:          ${curl_tls_srp_msg}
  resolver:         ${curl_res_msg}
  IPv6:             ${curl_ipv6_msg}
  Unix sockets:     ${curl_unix_sockets_msg}
  IDN:              ${curl_idn_msg}
  Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
  Built-in manual:  ${curl_manual_msg}
48151
48152
48153
48154
48155
48156
48157

48158
48159
48160
48161
48162
48163
48164
  curl version:     ${CURLVERSION}
  SSL:              ${curl_ssl_msg}
  SSH:              ${curl_ssh_msg}
  zlib:             ${curl_zlib_msg}
  brotli:           ${curl_brotli_msg}
  zstd:             ${curl_zstd_msg}
  GSS-API:          ${curl_gss_msg}

  TLS-SRP:          ${curl_tls_srp_msg}
  resolver:         ${curl_res_msg}
  IPv6:             ${curl_ipv6_msg}
  Unix sockets:     ${curl_unix_sockets_msg}
  IDN:              ${curl_idn_msg}
  Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
  Built-in manual:  ${curl_manual_msg}







>







48103
48104
48105
48106
48107
48108
48109
48110
48111
48112
48113
48114
48115
48116
48117
  curl version:     ${CURLVERSION}
  SSL:              ${curl_ssl_msg}
  SSH:              ${curl_ssh_msg}
  zlib:             ${curl_zlib_msg}
  brotli:           ${curl_brotli_msg}
  zstd:             ${curl_zstd_msg}
  GSS-API:          ${curl_gss_msg}
  GSASL:            ${curl_gsasl_msg}
  TLS-SRP:          ${curl_tls_srp_msg}
  resolver:         ${curl_res_msg}
  IPv6:             ${curl_ipv6_msg}
  Unix sockets:     ${curl_unix_sockets_msg}
  IDN:              ${curl_idn_msg}
  Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
  Built-in manual:  ${curl_manual_msg}
Changes to jni/curl/configure.ac.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
#***************************************************************************
dnl Process this file with autoconf to produce a configure script.

AC_PREREQ(2.57)

dnl We don't know the version number "statically" so we use a dash here
AC_INIT([curl], [-], [a suitable curl mailing list: https://curl.se/mail/])

XC_OVR_ZZ50
XC_OVR_ZZ60
CURL_OVERRIDE_AUTOCONF







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
#***************************************************************************
dnl Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)

dnl We don't know the version number "statically" so we use a dash here
AC_INIT([curl], [-], [a suitable curl mailing list: https://curl.se/mail/])

XC_OVR_ZZ50
XC_OVR_ZZ60
CURL_OVERRIDE_AUTOCONF
139
140
141
142
143
144
145
146
147
148
149
150
151

152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
PKGADD_VENDOR="curl.se"
AC_SUBST(PKGADD_PKG)
AC_SUBST(PKGADD_NAME)
AC_SUBST(PKGADD_VENDOR)

dnl
dnl initialize all the info variables
    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl} )"
    curl_ssh_msg="no      (--with-{libssh,libssh2})"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
   curl_zstd_msg="no      (--with-zstd)"
    curl_gss_msg="no      (--with-gssapi)"

curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"
    curl_idn_msg="no      (--with-{libidn2,winidn})"
 curl_manual_msg="no      (--enable-manual)"
curl_libcurl_msg="enabled (--disable-libcurl-option)"
curl_verbose_msg="enabled (--disable-verbose)"
   curl_sspi_msg="no      (--enable-sspi)"
   curl_ldap_msg="no      (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
  curl_ldaps_msg="no      (--enable-ldaps)"
   curl_rtsp_msg="no      (--enable-rtsp)"
   curl_rtmp_msg="no      (--with-librtmp)"
  curl_mtlnk_msg="no      (--with-libmetalink)"
    curl_psl_msg="no      (--with-libpsl)"
 curl_altsvc_msg="enabled";
    ssl_backends=
     curl_h1_msg="enabled (--with-hyper)"
     curl_h2_msg="no      (--with-nghttp2)"
     curl_h3_msg="no      (--with-ngtcp2, --with-quiche)"

enable_altsvc="yes"

dnl
dnl Save some initial values the user might have provided
dnl







|





>

















|
|







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
PKGADD_VENDOR="curl.se"
AC_SUBST(PKGADD_PKG)
AC_SUBST(PKGADD_NAME)
AC_SUBST(PKGADD_VENDOR)

dnl
dnl initialize all the info variables
    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )"
    curl_ssh_msg="no      (--with-{libssh,libssh2})"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
   curl_zstd_msg="no      (--with-zstd)"
    curl_gss_msg="no      (--with-gssapi)"
  curl_gsasl_msg="no      (--with-gsasl)"
curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"
    curl_idn_msg="no      (--with-{libidn2,winidn})"
 curl_manual_msg="no      (--enable-manual)"
curl_libcurl_msg="enabled (--disable-libcurl-option)"
curl_verbose_msg="enabled (--disable-verbose)"
   curl_sspi_msg="no      (--enable-sspi)"
   curl_ldap_msg="no      (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
  curl_ldaps_msg="no      (--enable-ldaps)"
   curl_rtsp_msg="no      (--enable-rtsp)"
   curl_rtmp_msg="no      (--with-librtmp)"
  curl_mtlnk_msg="no      (--with-libmetalink)"
    curl_psl_msg="no      (--with-libpsl)"
 curl_altsvc_msg="enabled";
    ssl_backends=
     curl_h1_msg="enabled (internal)"
     curl_h2_msg="no      (--with-nghttp2, --with-hyper)"
     curl_h3_msg="no      (--with-ngtcp2, --with-quiche)"

enable_altsvc="yes"

dnl
dnl Save some initial values the user might have provided
dnl
352
353
354
355
356
357
358

359
360
361
362
363
364
365

366
367
368
369
370

371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$curl_cv_native_windows" in
  X-yes)
    CURL_CHECK_HEADER_WINSOCK
    CURL_CHECK_HEADER_WINSOCK2
    CURL_CHECK_HEADER_WS2TCPIP

    CURL_CHECK_HEADER_WINLDAP
    CURL_CHECK_HEADER_WINBER
    ;;
  *)
    curl_cv_header_winsock_h="no"
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"

    curl_cv_header_winldap_h="no"
    curl_cv_header_winber_h="no"
    ;;
esac
CURL_CHECK_WIN32_LARGEFILE


CURL_MAC_CFLAGS
CURL_SUPPORTS_BUILTIN_AVAILABLE


dnl ************************************************************
dnl switch off particular protocols
dnl
AC_MSG_CHECKING([whether to support http])
AC_ARG_ENABLE(http,
AC_HELP_STRING([--enable-http],[Enable HTTP support])
AC_HELP_STRING([--disable-http],[Disable HTTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
       disable_http="yes"
       AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
       AC_SUBST(CURL_DISABLE_HTTP, [1])







>







>





>










|
|







353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$curl_cv_native_windows" in
  X-yes)
    CURL_CHECK_HEADER_WINSOCK
    CURL_CHECK_HEADER_WINSOCK2
    CURL_CHECK_HEADER_WS2TCPIP
    CURL_CHECK_HEADER_WINCRYPT
    CURL_CHECK_HEADER_WINLDAP
    CURL_CHECK_HEADER_WINBER
    ;;
  *)
    curl_cv_header_winsock_h="no"
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"
    curl_cv_header_wincrypt_h="no"
    curl_cv_header_winldap_h="no"
    curl_cv_header_winber_h="no"
    ;;
esac
CURL_CHECK_WIN32_LARGEFILE
CURL_CHECK_WIN32_CRYPTO

CURL_MAC_CFLAGS
CURL_SUPPORTS_BUILTIN_AVAILABLE


dnl ************************************************************
dnl switch off particular protocols
dnl
AC_MSG_CHECKING([whether to support http])
AC_ARG_ENABLE(http,
AS_HELP_STRING([--enable-http],[Enable HTTP support])
AS_HELP_STRING([--disable-http],[Disable HTTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
       disable_http="yes"
       AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
       AC_SUBST(CURL_DISABLE_HTTP, [1])
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support ftp])
AC_ARG_ENABLE(ftp,
AC_HELP_STRING([--enable-ftp],[Enable FTP support])
AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
       AC_SUBST(CURL_DISABLE_FTP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support file])
AC_ARG_ENABLE(file,
AC_HELP_STRING([--enable-file],[Enable FILE support])
AC_HELP_STRING([--disable-file],[Disable FILE support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
       AC_SUBST(CURL_DISABLE_FILE, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support ldap])
AC_ARG_ENABLE(ldap,
AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
       AC_SUBST(CURL_DISABLE_LDAP, [1])
       ;;
  *)
       AC_MSG_RESULT(yes)
       ;;
  esac ],[
       AC_MSG_RESULT(yes) ]
)
AC_MSG_CHECKING([whether to support ldaps])
AC_ARG_ENABLE(ldaps,
AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
       AC_SUBST(CURL_DISABLE_LDAPS, [1])
       ;;
  *)   if test "x$CURL_DISABLE_LDAP" = "x1" ; then







|
|













|
|













|
|














|
|







402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support ftp])
AC_ARG_ENABLE(ftp,
AS_HELP_STRING([--enable-ftp],[Enable FTP support])
AS_HELP_STRING([--disable-ftp],[Disable FTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
       AC_SUBST(CURL_DISABLE_FTP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support file])
AC_ARG_ENABLE(file,
AS_HELP_STRING([--enable-file],[Enable FILE support])
AS_HELP_STRING([--disable-file],[Disable FILE support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
       AC_SUBST(CURL_DISABLE_FILE, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support ldap])
AC_ARG_ENABLE(ldap,
AS_HELP_STRING([--enable-ldap],[Enable LDAP support])
AS_HELP_STRING([--disable-ldap],[Disable LDAP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
       AC_SUBST(CURL_DISABLE_LDAP, [1])
       ;;
  *)
       AC_MSG_RESULT(yes)
       ;;
  esac ],[
       AC_MSG_RESULT(yes) ]
)
AC_MSG_CHECKING([whether to support ldaps])
AC_ARG_ENABLE(ldaps,
AS_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
AS_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
       AC_SUBST(CURL_DISABLE_LDAPS, [1])
       ;;
  *)   if test "x$CURL_DISABLE_LDAP" = "x1" ; then
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
         AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
         AC_SUBST(HAVE_LDAP_SSL, [1])
       fi ]
)

AC_MSG_CHECKING([whether to support rtsp])
AC_ARG_ENABLE(rtsp,
AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
       AC_SUBST(CURL_DISABLE_RTSP, [1])
       ;;
  *)   if test x$CURL_DISABLE_HTTP = x1 ; then







|
|







480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
         AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
         AC_SUBST(HAVE_LDAP_SSL, [1])
       fi ]
)

AC_MSG_CHECKING([whether to support rtsp])
AC_ARG_ENABLE(rtsp,
AS_HELP_STRING([--enable-rtsp],[Enable RTSP support])
AS_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
       AC_SUBST(CURL_DISABLE_RTSP, [1])
       ;;
  *)   if test x$CURL_DISABLE_HTTP = x1 ; then
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
       else
          AC_MSG_RESULT(no)
       fi
)

AC_MSG_CHECKING([whether to support proxies])
AC_ARG_ENABLE(proxy,
AC_HELP_STRING([--enable-proxy],[Enable proxy support])
AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
       AC_SUBST(CURL_DISABLE_PROXY, [1])
       https_proxy="no"
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support dict])
AC_ARG_ENABLE(dict,
AC_HELP_STRING([--enable-dict],[Enable DICT support])
AC_HELP_STRING([--disable-dict],[Disable DICT support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
       AC_SUBST(CURL_DISABLE_DICT, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support telnet])
AC_ARG_ENABLE(telnet,
AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
       AC_SUBST(CURL_DISABLE_TELNET, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support tftp])
AC_ARG_ENABLE(tftp,
AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
       AC_SUBST(CURL_DISABLE_TFTP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support pop3])
AC_ARG_ENABLE(pop3,
AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
       AC_SUBST(CURL_DISABLE_POP3, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)


AC_MSG_CHECKING([whether to support imap])
AC_ARG_ENABLE(imap,
AC_HELP_STRING([--enable-imap],[Enable IMAP support])
AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
       AC_SUBST(CURL_DISABLE_IMAP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)


AC_MSG_CHECKING([whether to support smb])
AC_ARG_ENABLE(smb,
AC_HELP_STRING([--enable-smb],[Enable SMB/CIFS support])
AC_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS])
       AC_SUBST(CURL_DISABLE_SMB, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support smtp])
AC_ARG_ENABLE(smtp,
AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
       AC_SUBST(CURL_DISABLE_SMTP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support gopher])
AC_ARG_ENABLE(gopher,
AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
       AC_SUBST(CURL_DISABLE_GOPHER, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support mqtt])
AC_ARG_ENABLE(mqtt,
AC_HELP_STRING([--enable-mqtt],[Enable MQTT support])
AC_HELP_STRING([--disable-mqtt],[Disable MQTT support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_MQTT, 1, [to disable MQTT])
       AC_SUBST(CURL_DISABLE_MQTT, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(no)
)

dnl **********************************************************************
dnl Check for built-in manual
dnl **********************************************************************

AC_MSG_CHECKING([whether to provide built-in manual])
AC_ARG_ENABLE(manual,
AC_HELP_STRING([--enable-manual],[Enable built-in manual])
AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       ;;
  *)   AC_MSG_RESULT(yes)
       USE_MANUAL="1"
       ;;
  esac ],
       AC_MSG_RESULT(yes)
       USE_MANUAL="1"
)
dnl The actual use of the USE_MANUAL variable is done much later in this
dnl script to allow other actions to disable it as well.

dnl ************************************************************
dnl disable C code generation support
dnl
AC_MSG_CHECKING([whether to enable generation of C code])
AC_ARG_ENABLE(libcurl_option,
AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
       curl_libcurl_msg="no"
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl **********************************************************************
dnl Checks for libraries.
dnl **********************************************************************

AC_MSG_CHECKING([whether to use libgcc])
AC_ARG_ENABLE(libgcc,
AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
[ case "$enableval" in
  yes)
       LIBS="-lgcc $LIBS"
       AC_MSG_RESULT(yes)
       ;;
  *)   AC_MSG_RESULT(no)
       ;;







|
|















|
|













|
|













|
|














|
|















|
|















|
|














|
|














|
|














|
|


















|
|



















|
|


















|







506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
       else
          AC_MSG_RESULT(no)
       fi
)

AC_MSG_CHECKING([whether to support proxies])
AC_ARG_ENABLE(proxy,
AS_HELP_STRING([--enable-proxy],[Enable proxy support])
AS_HELP_STRING([--disable-proxy],[Disable proxy support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
       AC_SUBST(CURL_DISABLE_PROXY, [1])
       https_proxy="no"
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support dict])
AC_ARG_ENABLE(dict,
AS_HELP_STRING([--enable-dict],[Enable DICT support])
AS_HELP_STRING([--disable-dict],[Disable DICT support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
       AC_SUBST(CURL_DISABLE_DICT, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support telnet])
AC_ARG_ENABLE(telnet,
AS_HELP_STRING([--enable-telnet],[Enable TELNET support])
AS_HELP_STRING([--disable-telnet],[Disable TELNET support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
       AC_SUBST(CURL_DISABLE_TELNET, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support tftp])
AC_ARG_ENABLE(tftp,
AS_HELP_STRING([--enable-tftp],[Enable TFTP support])
AS_HELP_STRING([--disable-tftp],[Disable TFTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
       AC_SUBST(CURL_DISABLE_TFTP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support pop3])
AC_ARG_ENABLE(pop3,
AS_HELP_STRING([--enable-pop3],[Enable POP3 support])
AS_HELP_STRING([--disable-pop3],[Disable POP3 support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
       AC_SUBST(CURL_DISABLE_POP3, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)


AC_MSG_CHECKING([whether to support imap])
AC_ARG_ENABLE(imap,
AS_HELP_STRING([--enable-imap],[Enable IMAP support])
AS_HELP_STRING([--disable-imap],[Disable IMAP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
       AC_SUBST(CURL_DISABLE_IMAP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)


AC_MSG_CHECKING([whether to support smb])
AC_ARG_ENABLE(smb,
AS_HELP_STRING([--enable-smb],[Enable SMB/CIFS support])
AS_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS])
       AC_SUBST(CURL_DISABLE_SMB, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support smtp])
AC_ARG_ENABLE(smtp,
AS_HELP_STRING([--enable-smtp],[Enable SMTP support])
AS_HELP_STRING([--disable-smtp],[Disable SMTP support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
       AC_SUBST(CURL_DISABLE_SMTP, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support gopher])
AC_ARG_ENABLE(gopher,
AS_HELP_STRING([--enable-gopher],[Enable Gopher support])
AS_HELP_STRING([--disable-gopher],[Disable Gopher support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
       AC_SUBST(CURL_DISABLE_GOPHER, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

AC_MSG_CHECKING([whether to support mqtt])
AC_ARG_ENABLE(mqtt,
AS_HELP_STRING([--enable-mqtt],[Enable MQTT support])
AS_HELP_STRING([--disable-mqtt],[Disable MQTT support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_MQTT, 1, [to disable MQTT])
       AC_SUBST(CURL_DISABLE_MQTT, [1])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(no)
)

dnl **********************************************************************
dnl Check for built-in manual
dnl **********************************************************************

AC_MSG_CHECKING([whether to provide built-in manual])
AC_ARG_ENABLE(manual,
AS_HELP_STRING([--enable-manual],[Enable built-in manual])
AS_HELP_STRING([--disable-manual],[Disable built-in manual]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       ;;
  *)   AC_MSG_RESULT(yes)
       USE_MANUAL="1"
       ;;
  esac ],
       AC_MSG_RESULT(yes)
       USE_MANUAL="1"
)
dnl The actual use of the USE_MANUAL variable is done much later in this
dnl script to allow other actions to disable it as well.

dnl ************************************************************
dnl disable C code generation support
dnl
AC_MSG_CHECKING([whether to enable generation of C code])
AC_ARG_ENABLE(libcurl_option,
AS_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
AS_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
       curl_libcurl_msg="no"
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl **********************************************************************
dnl Checks for libraries.
dnl **********************************************************************

AC_MSG_CHECKING([whether to use libgcc])
AC_ARG_ENABLE(libgcc,
AS_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
[ case "$enableval" in
  yes)
       LIBS="-lgcc $LIBS"
       AC_MSG_RESULT(yes)
       ;;
  *)   AC_MSG_RESULT(no)
       ;;
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
dnl Check for & handle argument to --with-zlib.

clean_CPPFLAGS=$CPPFLAGS
clean_LDFLAGS=$LDFLAGS
clean_LIBS=$LIBS
ZLIB_LIBS=""
AC_ARG_WITH(zlib,
AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
AC_HELP_STRING([--without-zlib],[disable use of zlib]),
               [OPT_ZLIB="$withval"])

if test "$OPT_ZLIB" = "no" ; then
    AC_MSG_WARN([zlib disabled])
else
  if test "$OPT_ZLIB" = "yes" ; then
    OPT_ZLIB=""







|
|







940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
dnl Check for & handle argument to --with-zlib.

clean_CPPFLAGS=$CPPFLAGS
clean_LDFLAGS=$LDFLAGS
clean_LIBS=$LIBS
ZLIB_LIBS=""
AC_ARG_WITH(zlib,
AS_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
AS_HELP_STRING([--without-zlib],[disable use of zlib]),
               [OPT_ZLIB="$withval"])

if test "$OPT_ZLIB" = "no" ; then
    AC_MSG_WARN([zlib disabled])
else
  if test "$OPT_ZLIB" = "yes" ; then
    OPT_ZLIB=""
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
dnl **********************************************************************

dnl Brotli project home page: https://github.com/google/brotli

dnl Default to compiler & linker defaults for BROTLI files & libraries.
OPT_BROTLI=off
AC_ARG_WITH(brotli,dnl
AC_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--without-brotli], [disable BROTLI]),
  OPT_BROTLI=$withval)

if test X"$OPT_BROTLI" != Xno; then
  dnl backup the pre-brotli variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"







|
|







1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
dnl **********************************************************************

dnl Brotli project home page: https://github.com/google/brotli

dnl Default to compiler & linker defaults for BROTLI files & libraries.
OPT_BROTLI=off
AC_ARG_WITH(brotli,dnl
AS_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AS_HELP_STRING([--without-brotli], [disable BROTLI]),
  OPT_BROTLI=$withval)

if test X"$OPT_BROTLI" != Xno; then
  dnl backup the pre-brotli variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
dnl **********************************************************************
dnl Check for libzstd
dnl **********************************************************************

dnl Default to compiler & linker defaults for libzstd
OPT_ZSTD=off
AC_ARG_WITH(zstd,dnl
AC_HELP_STRING([--with-zstd=PATH],[Where to look for libzstd, PATH points to the libzstd installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--without-zstd], [disable libzstd]),
  OPT_ZSTD=$withval)

if test X"$OPT_ZSTD" != Xno; then
  dnl backup the pre-zstd variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"







|
|







1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
dnl **********************************************************************
dnl Check for libzstd
dnl **********************************************************************

dnl Default to compiler & linker defaults for libzstd
OPT_ZSTD=off
AC_ARG_WITH(zstd,dnl
AS_HELP_STRING([--with-zstd=PATH],[Where to look for libzstd, PATH points to the libzstd installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AS_HELP_STRING([--without-zstd], [disable libzstd]),
  OPT_ZSTD=$withval)

if test X"$OPT_ZSTD" != Xno; then
  dnl backup the pre-zstd variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234

dnl **********************************************************************
dnl Check for LDAP
dnl **********************************************************************

LDAPLIBNAME=""
AC_ARG_WITH(ldap-lib,
AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
 [LDAPLIBNAME="$withval"])

LBERLIBNAME=""
AC_ARG_WITH(lber-lib,
AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
 [LBERLIBNAME="$withval"])

if test x$CURL_DISABLE_LDAP != x1 ; then

  CURL_CHECK_HEADER_LBER
  CURL_CHECK_HEADER_LDAP
  CURL_CHECK_HEADER_LDAPSSL







|




|







1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238

dnl **********************************************************************
dnl Check for LDAP
dnl **********************************************************************

LDAPLIBNAME=""
AC_ARG_WITH(ldap-lib,
AS_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
 [LDAPLIBNAME="$withval"])

LBERLIBNAME=""
AC_ARG_WITH(lber-lib,
AS_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
 [LBERLIBNAME="$withval"])

if test x$CURL_DISABLE_LDAP != x1 ; then

  CURL_CHECK_HEADER_LBER
  CURL_CHECK_HEADER_LDAP
  CURL_CHECK_HEADER_LDAPSSL
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319

1320
1321
1322
1323
1324
1325
1326
1327

dnl **********************************************************************
dnl Checks for IPv6
dnl **********************************************************************

AC_MSG_CHECKING([whether to enable IPv6])
AC_ARG_ENABLE(ipv6,
AC_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support])
AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       ipv6=no
       ;;
  *)   AC_MSG_RESULT(yes)
       ipv6=yes
       ;;
  esac ],


  AC_TRY_RUN([ /* are AF_INET6 and sockaddr_in6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>







|
|










>
|







1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332

dnl **********************************************************************
dnl Checks for IPv6
dnl **********************************************************************

AC_MSG_CHECKING([whether to enable IPv6])
AC_ARG_ENABLE(ipv6,
AS_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support])
AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       ipv6=no
       ;;
  *)   AC_MSG_RESULT(yes)
       ipv6=yes
       ;;
  esac ],

  AC_RUN_IFELSE([AC_LANG_SOURCE([[
/* are AF_INET6 and sockaddr_in6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
1335
1336
1337
1338
1339
1340
1341

1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368

1369
1370

1371
1372
1373

1374
1375

1376
1377
1378
1379
1380
1381
1382
 struct sockaddr_in6 s;
 (void)s;
 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}

],
  AC_MSG_RESULT(yes)
  ipv6=yes,
  AC_MSG_RESULT(no)
  ipv6=no,
  AC_MSG_RESULT(yes)
  ipv6=yes
))

if test "$ipv6" = yes; then
  curl_ipv6_msg="enabled"
  AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
  IPV6_ENABLED=1
  AC_SUBST(IPV6_ENABLED)

  AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
  AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <netinet/in.h>
#if defined (__TANDEM)
# include <netinet/in6.h>
#endif
#endif] ,

  struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
  if test "$have_sin6_scope_id" = yes; then

    AC_MSG_RESULT([yes])
    AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
  else

    AC_MSG_RESULT([no])
  fi

fi

dnl **********************************************************************
dnl Check if the operating system allows programs to write to their own argv[]
dnl **********************************************************************

AC_MSG_CHECKING([if argv can be written to])







>
















|









|
>
|
|
>
|
|
<
>

<
>







1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380

1381
1382

1383
1384
1385
1386
1387
1388
1389
1390
 struct sockaddr_in6 s;
 (void)s;
 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}
]])
],
  AC_MSG_RESULT(yes)
  ipv6=yes,
  AC_MSG_RESULT(no)
  ipv6=no,
  AC_MSG_RESULT(yes)
  ipv6=yes
))

if test "$ipv6" = yes; then
  curl_ipv6_msg="enabled"
  AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
  IPV6_ENABLED=1
  AC_SUBST(IPV6_ENABLED)

  AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
  AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <netinet/in.h>
#if defined (__TANDEM)
# include <netinet/in6.h>
#endif
#endif
]], [[
  struct sockaddr_in6 s;
  s.sin6_scope_id = 0;
]])], [
  AC_MSG_RESULT([yes])
  AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])

 ], [
    AC_MSG_RESULT([no])

 ])
fi

dnl **********************************************************************
dnl Check if the operating system allows programs to write to their own argv[]
dnl **********************************************************************

AC_MSG_CHECKING([if argv can be written to])
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
dnl Check for GSS-API libraries
dnl **********************************************************************

dnl check for GSS-API stuff in the /usr as default

GSSAPI_ROOT="/usr"
AC_ARG_WITH(gssapi-includes,
  AC_HELP_STRING([--with-gssapi-includes=DIR],
                 [Specify location of GSS-API headers]),
  [ GSSAPI_INCS="-I$withval"
    want_gss="yes" ]
)

AC_ARG_WITH(gssapi-libs,
  AC_HELP_STRING([--with-gssapi-libs=DIR],
                 [Specify location of GSS-API libs]),
  [ GSSAPI_LIB_DIR="-L$withval"
    want_gss="yes" ]
)

AC_ARG_WITH(gssapi,
  AC_HELP_STRING([--with-gssapi=DIR],
                 [Where to look for GSS-API]), [
  GSSAPI_ROOT="$withval"
  if test x"$GSSAPI_ROOT" != xno; then
    want_gss="yes"
    if test x"$GSSAPI_ROOT" = xyes; then
      dnl if yes, then use default root
      GSSAPI_ROOT="/usr"







|






|






|







1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
dnl Check for GSS-API libraries
dnl **********************************************************************

dnl check for GSS-API stuff in the /usr as default

GSSAPI_ROOT="/usr"
AC_ARG_WITH(gssapi-includes,
  AS_HELP_STRING([--with-gssapi-includes=DIR],
                 [Specify location of GSS-API headers]),
  [ GSSAPI_INCS="-I$withval"
    want_gss="yes" ]
)

AC_ARG_WITH(gssapi-libs,
  AS_HELP_STRING([--with-gssapi-libs=DIR],
                 [Specify location of GSS-API libs]),
  [ GSSAPI_LIB_DIR="-L$withval"
    want_gss="yes" ]
)

AC_ARG_WITH(gssapi,
  AS_HELP_STRING([--with-gssapi=DIR],
                 [Where to look for GSS-API]), [
  GSSAPI_ROOT="$withval"
  if test x"$GSSAPI_ROOT" != xno; then
    want_gss="yes"
    if test x"$GSSAPI_ROOT" = xyes; then
      dnl if yes, then use default root
      GSSAPI_ROOT="/usr"
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
dnl -------------------------------------------------------------
dnl parse --with-default-ssl-backend so it can be validated below
dnl -------------------------------------------------------------

DEFAULT_SSL_BACKEND=no
VALID_DEFAULT_SSL_BACKEND=
AC_ARG_WITH(default-ssl-backend,
AC_HELP_STRING([--with-default-ssl-backend=NAME],[Use NAME as default SSL backend])
AC_HELP_STRING([--without-default-ssl-backend],[Use implicit default SSL backend]),
  [DEFAULT_SSL_BACKEND=$withval])
case "$DEFAULT_SSL_BACKEND" in
  no)
    dnl --without-default-ssl-backend option used
    ;;
  default|yes)
    dnl --with-default-ssl-backend option used without name







|
|







1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
dnl -------------------------------------------------------------
dnl parse --with-default-ssl-backend so it can be validated below
dnl -------------------------------------------------------------

DEFAULT_SSL_BACKEND=no
VALID_DEFAULT_SSL_BACKEND=
AC_ARG_WITH(default-ssl-backend,
AS_HELP_STRING([--with-default-ssl-backend=NAME],[Use NAME as default SSL backend])
AS_HELP_STRING([--without-default-ssl-backend],[Use implicit default SSL backend]),
  [DEFAULT_SSL_BACKEND=$withval])
case "$DEFAULT_SSL_BACKEND" in
  no)
    dnl --without-default-ssl-backend option used
    ;;
  default|yes)
    dnl --with-default-ssl-backend option used without name
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657





1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674

dnl -------------------------------------------------
dnl check winssl option before other SSL libraries
dnl -------------------------------------------------

OPT_SCHANNEL=no
AC_ARG_WITH(winssl,dnl
AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
  OPT_SCHANNEL=$withval)

AC_ARG_WITH(schannel,dnl
AC_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS])
AC_HELP_STRING([--without-schannel], [disable Windows native SSL/TLS]),
  OPT_SCHANNEL=$withval)

AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
if test -z "$ssl_backends" -o "x$OPT_SCHANNEL" != xno; then
  ssl_msg=
  if test "x$OPT_SCHANNEL" != "xno"  &&
     test "x$curl_cv_native_windows" = "xyes"; then
    AC_MSG_RESULT(yes)
    AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
    AC_SUBST(USE_SCHANNEL, [1])
    ssl_msg="Windows-native"
    test schannel != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
    SCHANNEL_ENABLED=1
    # --with-schannel implies --enable-sspi
    AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
    AC_SUBST(USE_WINDOWS_SSPI, [1])
    curl_sspi_msg="enabled"
    LIBS="-lcrypt32 $LIBS"
  else
    AC_MSG_RESULT(no)
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
  AC_MSG_RESULT(no)
fi






OPT_SECURETRANSPORT=no
AC_ARG_WITH(darwinssl,dnl
AC_HELP_STRING([--with-darwinssl],[enable Apple OS native SSL/TLS])
AC_HELP_STRING([--without-darwinssl], [disable Apple OS native SSL/TLS]),
  OPT_SECURETRANSPORT=$withval)

AC_ARG_WITH(secure-transport,dnl
AC_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS])
AC_HELP_STRING([--without-secure-transport], [disable Apple OS native SSL/TLS]),
  OPT_SECURETRANSPORT=$withval)

AC_MSG_CHECKING([whether to enable Secure Transport])
if test -z "$ssl_backends" -o "x$OPT_SECURETRANSPORT" != xno; then
  if test "x$OPT_SECURETRANSPORT" != "xno" &&
     (test "x$cross_compiling" != "xno" || test -d "/System/Library/Frameworks/Security.framework"); then
    AC_MSG_RESULT(yes)







|
|



|
|

















<







>
>
>
>
>



|
|



|
|







1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657

1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686

dnl -------------------------------------------------
dnl check winssl option before other SSL libraries
dnl -------------------------------------------------

OPT_SCHANNEL=no
AC_ARG_WITH(winssl,dnl
AS_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
AS_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
  OPT_SCHANNEL=$withval)

AC_ARG_WITH(schannel,dnl
AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS])
AS_HELP_STRING([--without-schannel], [disable Windows native SSL/TLS]),
  OPT_SCHANNEL=$withval)

AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
if test -z "$ssl_backends" -o "x$OPT_SCHANNEL" != xno; then
  ssl_msg=
  if test "x$OPT_SCHANNEL" != "xno"  &&
     test "x$curl_cv_native_windows" = "xyes"; then
    AC_MSG_RESULT(yes)
    AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
    AC_SUBST(USE_SCHANNEL, [1])
    ssl_msg="Windows-native"
    test schannel != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
    SCHANNEL_ENABLED=1
    # --with-schannel implies --enable-sspi
    AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
    AC_SUBST(USE_WINDOWS_SSPI, [1])
    curl_sspi_msg="enabled"

  else
    AC_MSG_RESULT(no)
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
  AC_MSG_RESULT(no)
fi

dnl link required libraries for USE_WIN32_CRYPTO or USE_SCHANNEL
if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then
  LIBS="-ladvapi32 -lcrypt32 $LIBS"
fi

OPT_SECURETRANSPORT=no
AC_ARG_WITH(darwinssl,dnl
AS_HELP_STRING([--with-darwinssl],[enable Apple OS native SSL/TLS])
AS_HELP_STRING([--without-darwinssl], [disable Apple OS native SSL/TLS]),
  OPT_SECURETRANSPORT=$withval)

AC_ARG_WITH(secure-transport,dnl
AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS])
AS_HELP_STRING([--without-secure-transport], [disable Apple OS native SSL/TLS]),
  OPT_SECURETRANSPORT=$withval)

AC_MSG_CHECKING([whether to enable Secure Transport])
if test -z "$ssl_backends" -o "x$OPT_SECURETRANSPORT" != xno; then
  if test "x$OPT_SECURETRANSPORT" != "xno" &&
     (test "x$cross_compiling" != "xno" || test -d "/System/Library/Frameworks/Security.framework"); then
    AC_MSG_RESULT(yes)
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
  AC_MSG_RESULT(no)
fi

OPT_AMISSL=no
AC_ARG_WITH(amissl,dnl
AC_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)])
AC_HELP_STRING([--without-amissl], [disable Amiga native SSL/TLS (AmiSSL)]),
  OPT_AMISSL=$withval)

AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)])
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
  if test -z "$ssl_backends" -o "x$OPT_AMISSL" != xno; then
    ssl_msg=
    if test "x$OPT_AMISSL" != "xno"; then







|
|







1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
  AC_MSG_RESULT(no)
fi

OPT_AMISSL=no
AC_ARG_WITH(amissl,dnl
AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)])
AS_HELP_STRING([--without-amissl], [disable Amiga native SSL/TLS (AmiSSL)]),
  OPT_AMISSL=$withval)

AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)])
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
  if test -z "$ssl_backends" -o "x$OPT_AMISSL" != xno; then
    ssl_msg=
    if test "x$OPT_AMISSL" != "xno"; then
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745

1746
1747


1748

1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
dnl **********************************************************************

dnl Default to compiler & linker defaults for SSL files & libraries.
OPT_SSL=off
dnl Default to no CA bundle
ca="no"
AC_ARG_WITH(ssl,dnl
AC_HELP_STRING([--with-ssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
  OPT_SSL=$withval)

if test -z "$ssl_backends" -o "x$OPT_SSL" != xno &&
   test X"$OPT_SSL" != Xno; then
  ssl_msg=

  dnl backup the pre-ssl variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"

  dnl This is for Msys/Mingw
  case $host in
    *-*-msys* | *-*-mingw*)
      AC_MSG_CHECKING([for gdi32])
      my_ac_save_LIBS=$LIBS
      LIBS="-lgdi32 $LIBS"

      AC_TRY_LINK([#include <windef.h>
                   #include <wingdi.h>],


                   [GdiFlush();],

                   [ dnl worked!
                   AC_MSG_RESULT([yes])],
                   [ dnl failed, restore LIBS
                   LIBS=$my_ac_save_LIBS
                   AC_MSG_RESULT(no)]
                  )
      ;;
  esac

  case "$OPT_SSL" in
  yes)
    dnl --with-ssl (without path) used
    PKGTEST="yes"







|
|

















>
|
|
>
>
|
>
|
|
|
|
|
|







1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
dnl **********************************************************************

dnl Default to compiler & linker defaults for SSL files & libraries.
OPT_SSL=off
dnl Default to no CA bundle
ca="no"
AC_ARG_WITH(ssl,dnl
AS_HELP_STRING([--with-ssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AS_HELP_STRING([--without-ssl], [disable OpenSSL]),
  OPT_SSL=$withval)

if test -z "$ssl_backends" -o "x$OPT_SSL" != xno &&
   test X"$OPT_SSL" != Xno; then
  ssl_msg=

  dnl backup the pre-ssl variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"

  dnl This is for Msys/Mingw
  case $host in
    *-*-msys* | *-*-mingw*)
      AC_MSG_CHECKING([for gdi32])
      my_ac_save_LIBS=$LIBS
      LIBS="-lgdi32 $LIBS"
      AC_LINK_IFELSE([ AC_LANG_PROGRAM([[
        #include <windef.h>
        #include <wingdi.h>
        ]],
        [[
          GdiFlush();
        ]])],
        [ dnl worked!
        AC_MSG_RESULT([yes])],
        [ dnl failed, restore LIBS
        LIBS=$my_ac_save_LIBS
        AC_MSG_RESULT(no)]
        )
      ;;
  esac

  case "$OPT_SSL" in
  yes)
    dnl --with-ssl (without path) used
    PKGTEST="yes"
1829
1830
1831
1832
1833
1834
1835

1836

1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
  CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
  LDFLAGS="$LDFLAGS $SSL_LDFLAGS"

  AC_CHECK_LIB(crypto, HMAC_Update,[
     HAVECRYPTO="yes"
     LIBS="-lcrypto $LIBS"
     ],[

     LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"

     if test "$PKGCONFIG" = "no" ; then
       # only set this if pkg-config wasn't used
       CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
     fi
     # Linking previously failed, try extra paths from --with-ssl or pkg-config.
     # Use a different function name to avoid reusing the earlier cached result.
     AC_CHECK_LIB(crypto, HMAC_Init_ex,[
       HAVECRYPTO="yes"
       LIBS="-lcrypto $LIBS"], [

       dnl still no, but what about with -ldl?
       AC_MSG_CHECKING([OpenSSL linking with -ldl])
       LIBS="$CLEANLIBS -lcrypto -ldl"
       AC_TRY_LINK(
       [
         #include <openssl/err.h>
       ],
       [
         ERR_clear_error();
       ],
       [
         AC_MSG_RESULT(yes)
         HAVECRYPTO="yes"
       ],
       [
         AC_MSG_RESULT(no)
         dnl ok, so what about both -ldl and -lpthread?
         dnl This may be necessary for static libraries.

         AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread])
         LIBS="$CLEANLIBS -lcrypto -ldl -lpthread"
         AC_TRY_LINK(
         [
           #include <openssl/err.h>
         ],
         [
           ERR_clear_error();
         ],
         [
           AC_MSG_RESULT(yes)
           HAVECRYPTO="yes"
         ],
         [
           AC_MSG_RESULT(no)
           LDFLAGS="$CLEANLDFLAGS"







>
|
>
|












|
<

|
<

|











|
|

|
<

|







1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868

1869
1870

1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887

1888
1889
1890
1891
1892
1893
1894
1895
1896
  CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
  LDFLAGS="$LDFLAGS $SSL_LDFLAGS"

  AC_CHECK_LIB(crypto, HMAC_Update,[
     HAVECRYPTO="yes"
     LIBS="-lcrypto $LIBS"
     ],[
     if test -n "$LIB_OPENSSL" ; then
       LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
     fi
     if test "$PKGCONFIG" = "no" -a -n "$PREFIX_OPENSSL" ; then
       # only set this if pkg-config wasn't used
       CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
     fi
     # Linking previously failed, try extra paths from --with-ssl or pkg-config.
     # Use a different function name to avoid reusing the earlier cached result.
     AC_CHECK_LIB(crypto, HMAC_Init_ex,[
       HAVECRYPTO="yes"
       LIBS="-lcrypto $LIBS"], [

       dnl still no, but what about with -ldl?
       AC_MSG_CHECKING([OpenSSL linking with -ldl])
       LIBS="$CLEANLIBS -lcrypto -ldl"
       AC_LINK_IFELSE([ AC_LANG_PROGRAM([[

         #include <openssl/err.h>
       ]], [[

         ERR_clear_error();
       ]]) ],
       [
         AC_MSG_RESULT(yes)
         HAVECRYPTO="yes"
       ],
       [
         AC_MSG_RESULT(no)
         dnl ok, so what about both -ldl and -lpthread?
         dnl This may be necessary for static libraries.

         AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread])
         LIBS="$CLEANLIBS -lcrypto -ldl -lpthread"
         AC_LINK_IFELSE([
           AC_LANG_PROGRAM([[
           #include <openssl/err.h>
         ]], [[

           ERR_clear_error();
         ]])],
         [
           AC_MSG_RESULT(yes)
           HAVECRYPTO="yes"
         ],
         [
           AC_MSG_RESULT(no)
           LDFLAGS="$CLEANLDFLAGS"
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066

dnl **********************************************************************
dnl Check for the random seed preferences
dnl **********************************************************************

if test X"$OPENSSL_ENABLED" = X"1"; then
  AC_ARG_WITH(egd-socket,
  AC_HELP_STRING([--with-egd-socket=FILE],
                 [Entropy Gathering Daemon socket pathname]),
      [ EGD_SOCKET="$withval" ]
  )
  if test -n "$EGD_SOCKET" ; then
          AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
          [your Entropy Gathering Daemon socket pathname] )
  fi

  dnl Check for user-specified random device
  AC_ARG_WITH(random,
  AC_HELP_STRING([--with-random=FILE],
                 [read randomness from FILE (default=/dev/urandom)]),
      [ RANDOM_FILE="$withval" ],
      [
          if test x$cross_compiling != xyes; then
            dnl Check for random device
            AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
          else







|










|







2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081

dnl **********************************************************************
dnl Check for the random seed preferences
dnl **********************************************************************

if test X"$OPENSSL_ENABLED" = X"1"; then
  AC_ARG_WITH(egd-socket,
  AS_HELP_STRING([--with-egd-socket=FILE],
                 [Entropy Gathering Daemon socket pathname]),
      [ EGD_SOCKET="$withval" ]
  )
  if test -n "$EGD_SOCKET" ; then
          AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
          [your Entropy Gathering Daemon socket pathname] )
  fi

  dnl Check for user-specified random device
  AC_ARG_WITH(random,
  AS_HELP_STRING([--with-random=FILE],
                 [read randomness from FILE (default=/dev/urandom)]),
      [ RANDOM_FILE="$withval" ],
      [
          if test x$cross_compiling != xyes; then
            dnl Check for random device
            AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
          else
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
fi

dnl ---
dnl Whether the OpenSSL configuration will be loaded automatically
dnl ---
if test X"$OPENSSL_ENABLED" = X"1"; then
AC_ARG_ENABLE(openssl-auto-load-config,
AC_HELP_STRING([--enable-openssl-auto-load-config],[Enable automatic loading of OpenSSL configuration])
AC_HELP_STRING([--disable-openssl-auto-load-config],[Disable automatic loading of OpenSSL configuration]),
[ if test X"$enableval" = X"no"; then
    AC_MSG_NOTICE([automatic loading of OpenSSL configuration disabled])
    AC_DEFINE(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG, 1, [if the OpenSSL configuration won't be loaded automatically])
  fi
])
fi

dnl ----------------------------------------------------
dnl check for GnuTLS
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for GnuTLS files & libraries.
OPT_GNUTLS=no

AC_ARG_WITH(gnutls,dnl
AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
  OPT_GNUTLS=$withval)

if test -z "$ssl_backends" -o "x$OPT_GNUTLS" != xno; then
  ssl_msg=

  if test X"$OPT_GNUTLS" != Xno; then








|
|















|
|







2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
fi

dnl ---
dnl Whether the OpenSSL configuration will be loaded automatically
dnl ---
if test X"$OPENSSL_ENABLED" = X"1"; then
AC_ARG_ENABLE(openssl-auto-load-config,
AS_HELP_STRING([--enable-openssl-auto-load-config],[Enable automatic loading of OpenSSL configuration])
AS_HELP_STRING([--disable-openssl-auto-load-config],[Disable automatic loading of OpenSSL configuration]),
[ if test X"$enableval" = X"no"; then
    AC_MSG_NOTICE([automatic loading of OpenSSL configuration disabled])
    AC_DEFINE(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG, 1, [if the OpenSSL configuration won't be loaded automatically])
  fi
])
fi

dnl ----------------------------------------------------
dnl check for GnuTLS
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for GnuTLS files & libraries.
OPT_GNUTLS=no

AC_ARG_WITH(gnutls,dnl
AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
AS_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
  OPT_GNUTLS=$withval)

if test -z "$ssl_backends" -o "x$OPT_GNUTLS" != xno; then
  ssl_msg=

  if test X"$OPT_GNUTLS" != Xno; then

2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
dnl Check which crypto backend GnuTLS uses
dnl ---

if test "$GNUTLS_ENABLED" = "1"; then
  USE_GNUTLS_NETTLE=
  # First check if we can detect either crypto library via transitive linking
  AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
  if test "$USE_GNUTLS_NETTLE" = ""; then
    AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
  fi
  # If not, try linking directly to both of them to see if they are available
  if test "$USE_GNUTLS_NETTLE" = ""; then
    AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
  fi
  if test "$USE_GNUTLS_NETTLE" = ""; then
    AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
  fi
  if test "$USE_GNUTLS_NETTLE" = ""; then
    AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
  fi
  if test "$USE_GNUTLS_NETTLE" = "1"; then
    AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
    AC_SUBST(USE_GNUTLS_NETTLE, [1])
    LIBS="-lnettle $LIBS"
  else
    LIBS="-lgcrypt $LIBS"
  fi
fi

dnl ---
dnl We require GnuTLS with SRP support.
dnl ---
if test "$GNUTLS_ENABLED" = "1"; then
  AC_CHECK_LIB(gnutls, gnutls_srp_verifier,







|
<
<





<
<
<
|

<
<
<
|
<
<
<







2238
2239
2240
2241
2242
2243
2244
2245


2246
2247
2248
2249
2250



2251
2252



2253



2254
2255
2256
2257
2258
2259
2260
dnl Check which crypto backend GnuTLS uses
dnl ---

if test "$GNUTLS_ENABLED" = "1"; then
  USE_GNUTLS_NETTLE=
  # First check if we can detect either crypto library via transitive linking
  AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])



  # If not, try linking directly to both of them to see if they are available
  if test "$USE_GNUTLS_NETTLE" = ""; then
    AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
  fi
  if test "$USE_GNUTLS_NETTLE" = ""; then



    AC_MSG_ERROR([GnuTLS found, but nettle was not found])
  fi



  LIBS="-lnettle $LIBS"



fi

dnl ---
dnl We require GnuTLS with SRP support.
dnl ---
if test "$GNUTLS_ENABLED" = "1"; then
  AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
dnl ----------------------------------------------------

OPT_MBEDTLS=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(mbedtls,dnl
AC_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root])
AC_HELP_STRING([--without-mbedtls], [disable mbedTLS detection]),
  OPT_MBEDTLS=$withval)

if test -z "$ssl_backends" -o "x$OPT_MBEDTLS" != xno; then
  ssl_msg=

  if test X"$OPT_MBEDTLS" != Xno; then








|
|







2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
dnl ----------------------------------------------------

OPT_MBEDTLS=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(mbedtls,dnl
AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root])
AS_HELP_STRING([--without-mbedtls], [disable mbedTLS detection]),
  OPT_MBEDTLS=$withval)

if test -z "$ssl_backends" -o "x$OPT_MBEDTLS" != xno; then
  ssl_msg=

  if test X"$OPT_MBEDTLS" != Xno; then

2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
dnl Default to compiler & linker defaults for wolfSSL files & libraries.
OPT_WOLFSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS

AC_ARG_WITH(wolfssl,dnl
AC_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)])
AC_HELP_STRING([--without-wolfssl], [disable WolfSSL detection]),
  OPT_WOLFSSL=$withval)

case "$OPT_WOLFSSL" in
  yes|no)
    wolfpkg=""
    ;;
  *)







|
|







2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
dnl Default to compiler & linker defaults for wolfSSL files & libraries.
OPT_WOLFSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS

AC_ARG_WITH(wolfssl,dnl
AS_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)])
AS_HELP_STRING([--without-wolfssl], [disable WolfSSL detection]),
  OPT_WOLFSSL=$withval)

case "$OPT_WOLFSSL" in
  yes|no)
    wolfpkg=""
    ;;
  *)
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534

dnl Default to compiler & linker defaults for MesaLink files & libraries.
OPT_MESALINK=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(mesalink,dnl
AC_HELP_STRING([--with-mesalink=PATH],[where to look for MesaLink, PATH points to the installation root])
AC_HELP_STRING([--without-mesalink], [disable MesaLink detection]),
  OPT_MESALINK=$withval)

if test -z "$ssl_backends" -o "x$OPT_MESALINK" != xno; then
  ssl_msg=

  if test X"$OPT_MESALINK" != Xno; then








|
|







2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538

dnl Default to compiler & linker defaults for MesaLink files & libraries.
OPT_MESALINK=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(mesalink,dnl
AS_HELP_STRING([--with-mesalink=PATH],[where to look for MesaLink, PATH points to the installation root])
AS_HELP_STRING([--without-mesalink], [disable MesaLink detection]),
  OPT_MESALINK=$withval)

if test -z "$ssl_backends" -o "x$OPT_MESALINK" != xno; then
  ssl_msg=

  if test X"$OPT_MESALINK" != Xno; then

2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
dnl ----------------------------------------------------

OPT_BEARSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(bearssl,dnl
AC_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root])
AC_HELP_STRING([--without-bearssl], [disable BearSSL detection]),
  OPT_BEARSSL=$withval)

if test -z "$ssl_backends" -o "x$OPT_BEARSSL" != xno; then
  ssl_msg=

  if test X"$OPT_BEARSSL" != Xno; then








|
|







2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
dnl ----------------------------------------------------

OPT_BEARSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(bearssl,dnl
AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root])
AS_HELP_STRING([--without-bearssl], [disable BearSSL detection]),
  OPT_BEARSSL=$withval)

if test -z "$ssl_backends" -o "x$OPT_BEARSSL" != xno; then
  ssl_msg=

  if test X"$OPT_BEARSSL" != Xno; then

2692
2693
2694
2695
2696
2697
2698
2699
2700


























































































2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
      fi
    fi

  fi dnl BearSSL not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

dnl ----------------------------------------------------


























































































dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for NSS files & libraries.
OPT_NSS=no

AC_ARG_WITH(nss,dnl
AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
AC_HELP_STRING([--without-nss], [disable NSS detection]),
  OPT_NSS=$withval)

if test -z "$ssl_backends" -o "x$OPT_NSS" != xno; then
  ssl_msg=

  if test X"$OPT_NSS" != Xno; then










>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







|
|







2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
      fi
    fi

  fi dnl BearSSL not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

dnl ----------------------------------------------------
dnl check for rustls
dnl ----------------------------------------------------

OPT_RUSTLS=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(rustls,dnl
AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root])
AS_HELP_STRING([--without-rustls], [disable rustls detection]),
  OPT_RUSTLS=$withval)

if test -z "$ssl_backends" -o "x$OPT_RUSTLS" != xno; then
  ssl_msg=

  if test X"$OPT_RUSTLS" != Xno; then

    if test "$OPT_RUSTLS" = "yes"; then
      OPT_RUSTLS=""
    fi

    if test -z "$OPT_RUSTLS" ; then
      dnl check for lib first without setting any new path

      AC_CHECK_LIB(crustls, rustls_client_session_read,
      dnl libcrustls found, set the variable
       [
         AC_DEFINE(USE_RUSTLS, 1, [if rustls is enabled])
         AC_SUBST(USE_RUSTLS, [1])
         RUSTLS_ENABLED=1
         USE_RUSTLS="yes"
         ssl_msg="rustls"
	 test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
        ], [], -lpthread -ldl)
    fi

    addld=""
    addlib="-lpthread"
    addcflags=""
    bearssllib=""

    if test "x$USE_RUSTLS" != "xyes"; then
      dnl add the path and test again
      addld=-L$OPT_RUSTLS/lib$libsuff
      addcflags=-I$OPT_RUSTLS/include
      rustlslib=$OPT_RUSTLS/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      AC_CHECK_LIB(crustls, rustls_client_session_read,
       [
       AC_DEFINE(USE_RUSTLS, 1, [if rustls is enabled])
       AC_SUBST(USE_RUSTLS, [1])
       RUSTLS_ENABLED=1
       USE_RUSTLS="yes"
       ssl_msg="rustls"
       test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
       ],
       AC_MSG_ERROR([--with-rustls was specified but could not find rustls.]),
       -lpthread -ldl)
    fi

    if test "x$USE_RUSTLS" = "xyes"; then
      AC_MSG_NOTICE([detected rustls])
      check_for_ca_bundle=1

      LIBS="-lcrustls -lpthread -ldl $LIBS"

      if test -n "$rustlslib"; then
        dnl when shared libs were found in a path that the run-time
        dnl linker doesn't search through, we need to add it to
        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
        dnl due to this
        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$rustlslib"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $rustlslib to CURL_LIBRARY_PATH])
        fi
      fi
    fi

  fi dnl rustls not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

dnl ----------------------------------------------------
dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for NSS files & libraries.
OPT_NSS=no

AC_ARG_WITH(nss,dnl
AS_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
AS_HELP_STRING([--without-nss], [disable NSS detection]),
  OPT_NSS=$withval)

if test -z "$ssl_backends" -o "x$OPT_NSS" != xno; then
  ssl_msg=

  if test X"$OPT_NSS" != Xno; then

2823
2824
2825
2826
2827
2828
2829
2830

2831
2832
2833
2834
2835
2836
2837
    fi dnl NSS found

  fi dnl NSS not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED" in

x)
  AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
  AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this.])
  ;;
x1)
  # one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)







|
>







2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
    fi dnl NSS found

  fi dnl NSS not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED$RUSTLS_ENABLED"
in
x)
  AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
  AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this.])
  ;;
x1)
  # one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)
2891
2892
2893
2894
2895
2896
2897






















2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
    [curl_psl_msg="no      (libpsl not found)";
     AC_MSG_WARN([libpsl was not found])
     ]
  )
fi
AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"])























dnl **********************************************************************
dnl Check for libmetalink
dnl **********************************************************************

OPT_LIBMETALINK=no

AC_ARG_WITH(libmetalink,dnl
AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
  OPT_LIBMETALINK=$withval)

if test X"$OPT_LIBMETALINK" != Xno; then

  addld=""
  addlib=""
  addcflags=""







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







|
|







2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
    [curl_psl_msg="no      (libpsl not found)";
     AC_MSG_WARN([libpsl was not found])
     ]
  )
fi
AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"])


dnl **********************************************************************
dnl Check for libgsasl
dnl **********************************************************************

AC_ARG_WITH(libgsasl,
           AS_HELP_STRING([--without-libgsasl],
           [disable libgsasl support for SCRAM]),
           with_libgsasl=$withval,
           with_libgsasl=yes)
if test $with_libgsasl != "no"; then
  AC_SEARCH_LIBS(gsasl_init, gsasl,
    [curl_gsasl_msg="enabled";
     AC_DEFINE([USE_GSASL], [1], [GSASL support enabled])
     ],
    [curl_gsasl_msg="no      (libgsasl not found)";
     AC_MSG_WARN([libgsasl was not found])
     ]
  )
fi
AM_CONDITIONAL([USE_GSASL], [test "$curl_gsasl_msg" = "enabled"])

dnl **********************************************************************
dnl Check for libmetalink
dnl **********************************************************************

OPT_LIBMETALINK=no

AC_ARG_WITH(libmetalink,dnl
AS_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
AS_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
  OPT_LIBMETALINK=$withval)

if test X"$OPT_LIBMETALINK" != Xno; then

  addld=""
  addlib=""
  addcflags=""
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
dnl **********************************************************************
dnl Check for the presence of LIBSSH2 libraries and headers
dnl **********************************************************************

dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
OPT_LIBSSH2=off
AC_ARG_WITH(libssh2,dnl
AC_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the libssh2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--with-libssh2], [enable libssh2]),
  OPT_LIBSSH2=$withval, OPT_LIBSSH2=no)


OPT_LIBSSH=off
AC_ARG_WITH(libssh,dnl
AC_HELP_STRING([--with-libssh=PATH],[Where to look for libssh, PATH points to the libssh installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--with-libssh], [enable libssh]),
  OPT_LIBSSH=$withval, OPT_LIBSSH=no)

OPT_WOLFSSH=off
AC_ARG_WITH(wolfssh,dnl
AC_HELP_STRING([--with-wolfssh=PATH],[Where to look for wolfssh, PATH points to the wolfSSH installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--with-wolfssh], [enable wolfssh]),
  OPT_WOLFSSH=$withval, OPT_WOLFSSH=no)

if test X"$OPT_LIBSSH2" != Xno; then
  dnl backup the pre-libssh2 variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"







|
|





|
|




|
|







3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
dnl **********************************************************************
dnl Check for the presence of LIBSSH2 libraries and headers
dnl **********************************************************************

dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
OPT_LIBSSH2=off
AC_ARG_WITH(libssh2,dnl
AS_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the libssh2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AS_HELP_STRING([--with-libssh2], [enable libssh2]),
  OPT_LIBSSH2=$withval, OPT_LIBSSH2=no)


OPT_LIBSSH=off
AC_ARG_WITH(libssh,dnl
AS_HELP_STRING([--with-libssh=PATH],[Where to look for libssh, PATH points to the libssh installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AS_HELP_STRING([--with-libssh], [enable libssh]),
  OPT_LIBSSH=$withval, OPT_LIBSSH=no)

OPT_WOLFSSH=off
AC_ARG_WITH(wolfssh,dnl
AS_HELP_STRING([--with-wolfssh=PATH],[Where to look for wolfssh, PATH points to the wolfSSH installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AS_HELP_STRING([--with-wolfssh], [enable wolfssh]),
  OPT_WOLFSSH=$withval, OPT_WOLFSSH=no)

if test X"$OPT_LIBSSH2" != Xno; then
  dnl backup the pre-libssh2 variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
dnl **********************************************************************
dnl Check for the presence of LIBRTMP libraries and headers
dnl **********************************************************************

dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
OPT_LIBRTMP=off
AC_ARG_WITH(librtmp,dnl
AC_HELP_STRING([--with-librtmp=PATH],[Where to look for librtmp, PATH points to the LIBRTMP installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
  OPT_LIBRTMP=$withval)

if test X"$OPT_LIBRTMP" != Xno; then
  dnl backup the pre-librtmp variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"







|
|







3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
dnl **********************************************************************
dnl Check for the presence of LIBRTMP libraries and headers
dnl **********************************************************************

dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
OPT_LIBRTMP=off
AC_ARG_WITH(librtmp,dnl
AS_HELP_STRING([--with-librtmp=PATH],[Where to look for librtmp, PATH points to the LIBRTMP installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AS_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
  OPT_LIBRTMP=$withval)

if test X"$OPT_LIBRTMP" != Xno; then
  dnl backup the pre-librtmp variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
dnl **********************************************************************
dnl Check for linker switch for versioned symbols
dnl **********************************************************************

versioned_symbols_flavour=
AC_MSG_CHECKING([whether versioned symbols are wanted])
AC_ARG_ENABLE(versioned-symbols,
AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
[ case "$enableval" in
  yes) AC_MSG_RESULT(yes)
    AC_MSG_CHECKING([if libraries can be versioned])
    GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
    if test -z "$GLD"; then
        AC_MSG_RESULT(no)
        AC_MSG_WARN([You need an ld version supporting the --version-script option])







|
|







3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
dnl **********************************************************************
dnl Check for linker switch for versioned symbols
dnl **********************************************************************

versioned_symbols_flavour=
AC_MSG_CHECKING([whether versioned symbols are wanted])
AC_ARG_ENABLE(versioned-symbols,
AS_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
AS_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
[ case "$enableval" in
  yes) AC_MSG_RESULT(yes)
    AC_MSG_CHECKING([if libraries can be versioned])
    GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
    if test -z "$GLD"; then
        AC_MSG_RESULT(no)
        AC_MSG_WARN([You need an ld version supporting the --version-script option])
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
dnl -------------------------------------------------
dnl check winidn option before other IDN libraries
dnl -------------------------------------------------

AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
OPT_WINIDN="default"
AC_ARG_WITH(winidn,
AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
  OPT_WINIDN=$withval)
case "$OPT_WINIDN" in
  no|default)
    dnl --without-winidn option used or configure option not specified
    want_winidn="no"
    AC_MSG_RESULT([no])
    ;;







|
|







3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
dnl -------------------------------------------------
dnl check winidn option before other IDN libraries
dnl -------------------------------------------------

AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
OPT_WINIDN="default"
AC_ARG_WITH(winidn,
AS_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
AS_HELP_STRING([--without-winidn], [disable Windows native IDN]),
  OPT_WINIDN=$withval)
case "$OPT_WINIDN" in
  no|default)
    dnl --without-winidn option used or configure option not specified
    want_winidn="no"
    AC_MSG_RESULT([no])
    ;;
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
dnl **********************************************************************
dnl Check for the presence of IDN libraries and headers
dnl **********************************************************************

AC_MSG_CHECKING([whether to build with libidn2])
OPT_IDN="default"
AC_ARG_WITH(libidn2,
AC_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage])
AC_HELP_STRING([--without-libidn2],[Disable libidn2 usage]),
  [OPT_IDN=$withval])
case "$OPT_IDN" in
  no)
    dnl --without-libidn2 option used
    want_idn="no"
    AC_MSG_RESULT([no])
    ;;







|
|







3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
dnl **********************************************************************
dnl Check for the presence of IDN libraries and headers
dnl **********************************************************************

AC_MSG_CHECKING([whether to build with libidn2])
OPT_IDN="default"
AC_ARG_WITH(libidn2,
AS_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage])
AS_HELP_STRING([--without-libidn2],[Disable libidn2 usage]),
  [OPT_IDN=$withval])
case "$OPT_IDN" in
  no)
    dnl --without-libidn2 option used
    want_idn="no"
    AC_MSG_RESULT([no])
    ;;
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546

if test "x$disable_http" = "xyes"; then
  # without HTTP, nghttp2 is no use
  OPT_H2="no"
fi

AC_ARG_WITH(nghttp2,
AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
  [OPT_H2=$withval])
case "$OPT_H2" in
  no)
    dnl --without-nghttp2 option used
    want_h2="no"
    ;;
  yes)







|
|







3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663

if test "x$disable_http" = "xyes"; then
  # without HTTP, nghttp2 is no use
  OPT_H2="no"
fi

AC_ARG_WITH(nghttp2,
AS_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
AS_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
  [OPT_H2=$withval])
case "$OPT_H2" in
  no)
    dnl --without-nghttp2 option used
    want_h2="no"
    ;;
  yes)
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631

if test "x$disable_http" = "xyes"; then
  # without HTTP, ngtcp2 is no use
  OPT_TCP2="no"
fi

AC_ARG_WITH(ngtcp2,
AC_HELP_STRING([--with-ngtcp2=PATH],[Enable ngtcp2 usage])
AC_HELP_STRING([--without-ngtcp2],[Disable ngtcp2 usage]),
  [OPT_TCP2=$withval])
case "$OPT_TCP2" in
  no)
    dnl --without-ngtcp2 option used
    want_tcp2="no"
    ;;
  yes)







|
|







3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748

if test "x$disable_http" = "xyes"; then
  # without HTTP, ngtcp2 is no use
  OPT_TCP2="no"
fi

AC_ARG_WITH(ngtcp2,
AS_HELP_STRING([--with-ngtcp2=PATH],[Enable ngtcp2 usage])
AS_HELP_STRING([--without-ngtcp2],[Disable ngtcp2 usage]),
  [OPT_TCP2=$withval])
case "$OPT_TCP2" in
  no)
    dnl --without-ngtcp2 option used
    want_tcp2="no"
    ;;
  yes)
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830

if test "x$NGTCP2_ENABLED" = "x"; then
  # without ngtcp2, nghttp3 is of no use for us
  OPT_NGHTTP3="no"
fi

AC_ARG_WITH(nghttp3,
AC_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage])
AC_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]),
  [OPT_NGHTTP3=$withval])
case "$OPT_NGHTTP3" in
  no)
    dnl --without-nghttp3 option used
    want_nghttp3="no"
    ;;
  yes)







|
|







3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947

if test "x$NGTCP2_ENABLED" = "x"; then
  # without ngtcp2, nghttp3 is of no use for us
  OPT_NGHTTP3="no"
fi

AC_ARG_WITH(nghttp3,
AS_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage])
AS_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]),
  [OPT_NGHTTP3=$withval])
case "$OPT_NGHTTP3" in
  no)
    dnl --without-nghttp3 option used
    want_nghttp3="no"
    ;;
  yes)
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921

fi

dnl **********************************************************************
dnl Check for quiche (QUIC)
dnl **********************************************************************

OPT_QUICHE="yes"

if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
  # without HTTP or with ngtcp2, quiche is no use
  OPT_QUICHE="no"
fi

AC_ARG_WITH(quiche,
AC_HELP_STRING([--with-quiche=PATH],[Enable quiche usage])
AC_HELP_STRING([--without-quiche],[Disable quiche usage]),
  [OPT_QUICHE=$withval])
case "$OPT_QUICHE" in
  no)
    dnl --without-quiche option used
    want_quiche="no"
    ;;
  yes)







|







|
|







4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038

fi

dnl **********************************************************************
dnl Check for quiche (QUIC)
dnl **********************************************************************

OPT_QUICHE="no"

if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
  # without HTTP or with ngtcp2, quiche is no use
  OPT_QUICHE="no"
fi

AC_ARG_WITH(quiche,
AS_HELP_STRING([--with-quiche=PATH],[Enable quiche usage])
AS_HELP_STRING([--without-quiche],[Disable quiche usage]),
  [OPT_QUICHE=$withval])
case "$OPT_QUICHE" in
  no)
    dnl --without-quiche option used
    want_quiche="no"
    ;;
  yes)
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023




4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
          AC_CHECK_FUNCS([quiche_conn_set_qlog_fd])
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $DIR_QUICHE to CURL_LIBRARY_PATH]),
       )
      ],
        dnl not found, revert back to clean variables
        LDFLAGS=$CLEANLDFLAGS
        CPPFLAGS=$CLEANCPPFLAGS
        LIBS=$CLEANLIBS
    )
  else
    dnl no quiche pkg-config found, deal with it
    if test X"$want_quiche" != Xdefault; then
      dnl To avoid link errors, we do not allow --with-quiche without
      dnl a pkgconfig file
      AC_MSG_ERROR([--with-quiche was specified but could not find quiche pkg-config file.])
    fi
  fi
fi

dnl **********************************************************************
dnl Check for Hyper
dnl **********************************************************************

OPT_HYPER="yes"

if test "x$disable_http" = "xyes"; then
  # without HTTP, hyper is of no use
  OPT_HYPER="no"
fi

AC_ARG_WITH(hyper,
AC_HELP_STRING([--with-hyper=PATH],[Enable hyper usage])
AC_HELP_STRING([--without-hyper],[Disable hyper usage]),
  [OPT_HYPER=$withval])
case "$OPT_HYPER" in
  no)
    dnl --without-hyper option used
    want_hyper="no"
    ;;
  yes)
    dnl --with-hyper option used without path
    want_hyper="default"
    want_hyper_path=""
    ;;
  *)
    dnl --with-hyper option used with path
    want_hyper="yes"
    want_hyper_path="$withval"
    ;;
esac

if test X"$want_hyper" != Xno; then




  dnl backup the pre-hyper variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"

  CURL_CHECK_PKGCONFIG(hyper, $want_hyper_path)

  if test "$PKGCONFIG" != "no" ; then
    LIB_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path])
      $PKGCONFIG --libs-only-l hyper`
    CPP_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path]) dnl
      $PKGCONFIG --cflags-only-I hyper`
    LD_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path])
      $PKGCONFIG --libs-only-L hyper`
  else
    dnl no hyper pkg-config found
    LIB_HYPER="-lhyper"
    if test X"$want_hyper" != Xdefault; then
      CPP_HYPER=-I"$want_hyper_path/capi/include"
      LD_HYPER="-L$want_hyper_path/target/debug"
    fi
  fi
  if test -n "$LIB_HYPER"; then
    AC_MSG_NOTICE([-l is $LIB_HYPER])







|
<
<















<
<
<
<
|
<


|
|



















>
>
>
>
















|







4087
4088
4089
4090
4091
4092
4093
4094


4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109




4110

4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
          AC_CHECK_FUNCS([quiche_conn_set_qlog_fd])
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $DIR_QUICHE to CURL_LIBRARY_PATH]),
       )
      ],
        dnl not found, revert back to clean variables
        AC_MSG_ERROR([couldn't use quiche])


    )
  else
    dnl no quiche pkg-config found, deal with it
    if test X"$want_quiche" != Xdefault; then
      dnl To avoid link errors, we do not allow --with-quiche without
      dnl a pkgconfig file
      AC_MSG_ERROR([--with-quiche was specified but could not find quiche pkg-config file.])
    fi
  fi
fi

dnl **********************************************************************
dnl Check for Hyper
dnl **********************************************************************





OPT_HYPER="no"


AC_ARG_WITH(hyper,
AS_HELP_STRING([--with-hyper=PATH],[Enable hyper usage])
AS_HELP_STRING([--without-hyper],[Disable hyper usage]),
  [OPT_HYPER=$withval])
case "$OPT_HYPER" in
  no)
    dnl --without-hyper option used
    want_hyper="no"
    ;;
  yes)
    dnl --with-hyper option used without path
    want_hyper="default"
    want_hyper_path=""
    ;;
  *)
    dnl --with-hyper option used with path
    want_hyper="yes"
    want_hyper_path="$withval"
    ;;
esac

if test X"$want_hyper" != Xno; then
  if test "x$disable_http" = "xyes"; then
    AC_MSG_ERROR([--with-hyper is not compatible with --disable-http])
  fi

  dnl backup the pre-hyper variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"

  CURL_CHECK_PKGCONFIG(hyper, $want_hyper_path)

  if test "$PKGCONFIG" != "no" ; then
    LIB_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path])
      $PKGCONFIG --libs-only-l hyper`
    CPP_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path]) dnl
      $PKGCONFIG --cflags-only-I hyper`
    LD_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path])
      $PKGCONFIG --libs-only-L hyper`
  else
    dnl no hyper pkg-config found
    LIB_HYPER="-lhyper -ldl -lpthread -lm"
    if test X"$want_hyper" != Xdefault; then
      CPP_HYPER=-I"$want_hyper_path/capi/include"
      LD_HYPER="-L$want_hyper_path/target/debug"
    fi
  fi
  if test -n "$LIB_HYPER"; then
    AC_MSG_NOTICE([-l is $LIB_HYPER])
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
          AC_DEFINE(USE_HYPER, 1, [if hyper is in use])
          AC_SUBST(USE_HYPER, [1])
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_HYPER"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $DIR_HYPER to CURL_LIBRARY_PATH]),
       )
      ],
        dnl not found, revert back to clean variables
        LDFLAGS=$CLEANLDFLAGS
        CPPFLAGS=$CLEANCPPFLAGS
        LIBS=$CLEANLIBS
    )
  fi
fi


dnl **********************************************************************
dnl Check for zsh completion path
dnl **********************************************************************

OPT_ZSH_FPATH=default
AC_ARG_WITH(zsh-functions-dir,
AC_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH])
AC_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]),
  [OPT_ZSH_FPATH=$withval])
case "$OPT_ZSH_FPATH" in
  no)
    dnl --without-zsh-functions-dir option used
    ;;
  default|yes)
    dnl --with-zsh-functions-dir option used without path







|
<
<
<











|
|







4181
4182
4183
4184
4185
4186
4187
4188



4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
          AC_DEFINE(USE_HYPER, 1, [if hyper is in use])
          AC_SUBST(USE_HYPER, [1])
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_HYPER"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $DIR_HYPER to CURL_LIBRARY_PATH]),
       )
      ],
      AC_MSG_ERROR([--with-hyper but hyper was not found. See docs/HYPER.md.])



    )
  fi
fi


dnl **********************************************************************
dnl Check for zsh completion path
dnl **********************************************************************

OPT_ZSH_FPATH=default
AC_ARG_WITH(zsh-functions-dir,
AS_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH])
AS_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]),
  [OPT_ZSH_FPATH=$withval])
case "$OPT_ZSH_FPATH" in
  no)
    dnl --without-zsh-functions-dir option used
    ;;
  default|yes)
    dnl --with-zsh-functions-dir option used without path
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122

dnl **********************************************************************
dnl Check for fish completion path
dnl **********************************************************************

OPT_FISH_FPATH=default
AC_ARG_WITH(fish-functions-dir,
AC_HELP_STRING([--with-fish-functions-dir=PATH],[Install fish completions to PATH])
AC_HELP_STRING([--without-fish-functions-dir],[Do not install fish completions]),
  [OPT_FISH_FPATH=$withval])
case "$OPT_FISH_FPATH" in
  no)
    dnl --without-fish-functions-dir option used
    ;;
  default|yes)
    dnl --with-fish-functions-dir option used without path







|
|







4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233

dnl **********************************************************************
dnl Check for fish completion path
dnl **********************************************************************

OPT_FISH_FPATH=default
AC_ARG_WITH(fish-functions-dir,
AS_HELP_STRING([--with-fish-functions-dir=PATH],[Install fish completions to PATH])
AS_HELP_STRING([--without-fish-functions-dir],[Do not install fish completions]),
  [OPT_FISH_FPATH=$withval])
case "$OPT_FISH_FPATH" in
  no)
    dnl --without-fish-functions-dir option used
    ;;
  default|yes)
    dnl --with-fish-functions-dir option used without path
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
  *)
    dnl --with-fish-functions-dir option used with path
    FISH_FUNCTIONS_DIR="$withval"
    AC_SUBST(FISH_FUNCTIONS_DIR)
    ;;
esac

dnl **********************************************************************
dnl Back to "normal" configuring
dnl **********************************************************************

dnl Checks for header files.
AC_HEADER_STDC

CURL_CHECK_HEADER_MALLOC
CURL_CHECK_HEADER_MEMORY

dnl Now check for the very most basic headers. Then we can use these
dnl ones as default-headers when checking for the rest!
AC_CHECK_HEADERS(
        sys/types.h \







<
<
<
<
<
<
<







4242
4243
4244
4245
4246
4247
4248







4249
4250
4251
4252
4253
4254
4255
  *)
    dnl --with-fish-functions-dir option used with path
    FISH_FUNCTIONS_DIR="$withval"
    AC_SUBST(FISH_FUNCTIONS_DIR)
    ;;
esac








CURL_CHECK_HEADER_MALLOC
CURL_CHECK_HEADER_MEMORY

dnl Now check for the very most basic headers. Then we can use these
dnl ones as default-headers when checking for the rest!
AC_CHECK_HEADERS(
        sys/types.h \
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
)


dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
CURL_CHECK_VARIADIC_MACROS
AC_TYPE_SIZE_T
AC_HEADER_TIME
CURL_CHECK_STRUCT_TIMEVAL
CURL_VERIFY_RUNTIMELIBS

AX_COMPILE_CHECK_SIZEOF(size_t)
AX_COMPILE_CHECK_SIZEOF(long)
AX_COMPILE_CHECK_SIZEOF(int)
AX_COMPILE_CHECK_SIZEOF(short)







|







4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
)


dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
CURL_CHECK_VARIADIC_MACROS
AC_TYPE_SIZE_T

CURL_CHECK_STRUCT_TIMEVAL
CURL_VERIFY_RUNTIMELIBS

AX_COMPILE_CHECK_SIZEOF(size_t)
AX_COMPILE_CHECK_SIZEOF(long)
AX_COMPILE_CHECK_SIZEOF(int)
AX_COMPILE_CHECK_SIZEOF(short)
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353

TYPE_IN_ADDR_T

TYPE_SOCKADDR_STORAGE

TYPE_SIG_ATOMIC_T

AC_TYPE_SIGNAL

CURL_CHECK_FUNC_SELECT

CURL_CHECK_FUNC_RECV
CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL

CURL_CHECK_FUNC_ALARM







<
<







4442
4443
4444
4445
4446
4447
4448


4449
4450
4451
4452
4453
4454
4455

TYPE_IN_ADDR_T

TYPE_SOCKADDR_STORAGE

TYPE_SIG_ATOMIC_T



CURL_CHECK_FUNC_SELECT

CURL_CHECK_FUNC_RECV
CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL

CURL_CHECK_FUNC_ALARM
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
CURL_CHECK_FUNC_SOCKET
CURL_CHECK_FUNC_SOCKETPAIR
CURL_CHECK_FUNC_STRCASECMP
CURL_CHECK_FUNC_STRCMPI
CURL_CHECK_FUNC_STRDUP
CURL_CHECK_FUNC_STRERROR_R
CURL_CHECK_FUNC_STRICMP
CURL_CHECK_FUNC_STRNCASECMP
CURL_CHECK_FUNC_STRNCMPI
CURL_CHECK_FUNC_STRNICMP
CURL_CHECK_FUNC_STRSTR
CURL_CHECK_FUNC_STRTOK_R
CURL_CHECK_FUNC_STRTOLL
CURL_CHECK_FUNC_WRITEV








<







4492
4493
4494
4495
4496
4497
4498

4499
4500
4501
4502
4503
4504
4505
CURL_CHECK_FUNC_SOCKET
CURL_CHECK_FUNC_SOCKETPAIR
CURL_CHECK_FUNC_STRCASECMP
CURL_CHECK_FUNC_STRCMPI
CURL_CHECK_FUNC_STRDUP
CURL_CHECK_FUNC_STRERROR_R
CURL_CHECK_FUNC_STRICMP

CURL_CHECK_FUNC_STRNCMPI
CURL_CHECK_FUNC_STRNICMP
CURL_CHECK_FUNC_STRSTR
CURL_CHECK_FUNC_STRTOK_R
CURL_CHECK_FUNC_STRTOLL
CURL_CHECK_FUNC_WRITEV

4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
fi

dnl ************************************************************
dnl disable POSIX threads
dnl
AC_MSG_CHECKING([whether to use POSIX threads for threaded resolver])
AC_ARG_ENABLE(pthreads,
AC_HELP_STRING([--enable-pthreads],
               [Enable POSIX threads (default for threaded resolver)])
AC_HELP_STRING([--disable-pthreads],[Disable POSIX threads]),
[ case "$enableval" in
  no)  AC_MSG_RESULT(no)
       want_pthreads=no
       ;;
  *)   AC_MSG_RESULT(yes)
       want_pthreads=yes
       ;;







|

|







4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
fi

dnl ************************************************************
dnl disable POSIX threads
dnl
AC_MSG_CHECKING([whether to use POSIX threads for threaded resolver])
AC_ARG_ENABLE(pthreads,
AS_HELP_STRING([--enable-pthreads],
               [Enable POSIX threads (default for threaded resolver)])
AS_HELP_STRING([--disable-pthreads],[Disable POSIX threads]),
[ case "$enableval" in
  no)  AC_MSG_RESULT(no)
       want_pthreads=no
       ;;
  *)   AC_MSG_RESULT(yes)
       want_pthreads=yes
       ;;
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
CURL_CONVERT_INCLUDE_TO_ISYSTEM

dnl ************************************************************
dnl disable verbose text strings
dnl
AC_MSG_CHECKING([whether to enable verbose strings])
AC_ARG_ENABLE(verbose,
AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
       curl_verbose_msg="no"
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl enable SSPI support
dnl
AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
AC_ARG_ENABLE(sspi,
AC_HELP_STRING([--enable-sspi],[Enable SSPI])
AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
[ case "$enableval" in
  yes)
       if test "$curl_cv_native_windows" = "yes"; then
         AC_MSG_RESULT(yes)
         AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
         AC_SUBST(USE_WINDOWS_SSPI, [1])
         curl_sspi_msg="enabled"







|
|

















|
|







4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
CURL_CONVERT_INCLUDE_TO_ISYSTEM

dnl ************************************************************
dnl disable verbose text strings
dnl
AC_MSG_CHECKING([whether to enable verbose strings])
AC_ARG_ENABLE(verbose,
AS_HELP_STRING([--enable-verbose],[Enable verbose strings])
AS_HELP_STRING([--disable-verbose],[Disable verbose strings]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
       curl_verbose_msg="no"
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl enable SSPI support
dnl
AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
AC_ARG_ENABLE(sspi,
AS_HELP_STRING([--enable-sspi],[Enable SSPI])
AS_HELP_STRING([--disable-sspi],[Disable SSPI]),
[ case "$enableval" in
  yes)
       if test "$curl_cv_native_windows" = "yes"; then
         AC_MSG_RESULT(yes)
         AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
         AC_SUBST(USE_WINDOWS_SSPI, [1])
         curl_sspi_msg="enabled"
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
)

dnl ************************************************************
dnl disable cryptographic authentication
dnl
AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
AC_ARG_ENABLE(crypto-auth,
AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
       CURL_DISABLE_CRYPTO_AUTH=1
       ;;
  *)   AC_MSG_RESULT(yes)







|
|







4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
)

dnl ************************************************************
dnl disable cryptographic authentication
dnl
AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
AC_ARG_ENABLE(crypto-auth,
AS_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
AS_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
       CURL_DISABLE_CRYPTO_AUTH=1
       ;;
  *)   AC_MSG_RESULT(yes)
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
CURL_CHECK_NTLM_WB

dnl ************************************************************
dnl disable TLS-SRP authentication
dnl
AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
AC_ARG_ENABLE(tls-srp,
AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       want_tls_srp=no
       ;;
  *)   AC_MSG_RESULT(yes)
       want_tls_srp=yes







|
|







4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
CURL_CHECK_NTLM_WB

dnl ************************************************************
dnl disable TLS-SRP authentication
dnl
AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
AC_ARG_ENABLE(tls-srp,
AS_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
AS_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       want_tls_srp=no
       ;;
  *)   AC_MSG_RESULT(yes)
       want_tls_srp=yes
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
fi

dnl ************************************************************
dnl disable Unix domain sockets support
dnl
AC_MSG_CHECKING([whether to enable Unix domain sockets])
AC_ARG_ENABLE(unix-sockets,
AC_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets])
AC_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
[ case "$enableval" in
  no)  AC_MSG_RESULT(no)
       want_unix_sockets=no
       ;;
  *)   AC_MSG_RESULT(yes)
       want_unix_sockets=yes
       ;;







|
|







4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
fi

dnl ************************************************************
dnl disable Unix domain sockets support
dnl
AC_MSG_CHECKING([whether to enable Unix domain sockets])
AC_ARG_ENABLE(unix-sockets,
AS_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets])
AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
[ case "$enableval" in
  no)  AC_MSG_RESULT(no)
       want_unix_sockets=no
       ;;
  *)   AC_MSG_RESULT(yes)
       want_unix_sockets=yes
       ;;
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
fi

dnl ************************************************************
dnl disable cookies support
dnl
AC_MSG_CHECKING([whether to support cookies])
AC_ARG_ENABLE(cookies,
AC_HELP_STRING([--enable-cookies],[Enable cookies support])
AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable socketpair
dnl
AC_MSG_CHECKING([whether to support socketpair])
AC_ARG_ENABLE(socketpair,
AC_HELP_STRING([--enable-socketpair],[Enable socketpair support])
AC_HELP_STRING([--disable-socketpair],[Disable socketpair support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SOCKETPAIR, 1, [to disable socketpair support])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable HTTP authentication support
dnl
AC_MSG_CHECKING([whether to support HTTP authentication])
AC_ARG_ENABLE(http-auth,
AC_HELP_STRING([--enable-http-auth],[Enable HTTP authentication support])
AC_HELP_STRING([--disable-http-auth],[Disable HTTP authentication support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_HTTP_AUTH, 1, [disable HTTP authentication])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable DoH support
dnl
AC_MSG_CHECKING([whether to support DoH])
AC_ARG_ENABLE(doh,
AC_HELP_STRING([--enable-doh],[Enable DoH support])
AC_HELP_STRING([--disable-doh],[Disable DoH support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_DOH, 1, [disable DoH])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable mime API support
dnl
AC_MSG_CHECKING([whether to support the MIME API])
AC_ARG_ENABLE(mime,
AC_HELP_STRING([--enable-mime],[Enable mime API support])
AC_HELP_STRING([--disable-mime],[Disable mime API support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_MIME, 1, [disable mime API])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable date parsing
dnl
AC_MSG_CHECKING([whether to support date parsing])
AC_ARG_ENABLE(dateparse,
AC_HELP_STRING([--enable-dateparse],[Enable date parsing])
AC_HELP_STRING([--disable-dateparse],[Disable date parsing]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_PARSEDATE, 1, [disable date parsing])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable netrc
dnl
AC_MSG_CHECKING([whether to support netrc parsing])
AC_ARG_ENABLE(netrc,
AC_HELP_STRING([--enable-netrc],[Enable netrc parsing])
AC_HELP_STRING([--disable-netrc],[Disable netrc parsing]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_NETRC, 1, [disable netrc parsing])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable progress-meter
dnl
AC_MSG_CHECKING([whether to support progress-meter])
AC_ARG_ENABLE(progress-meter,
AC_HELP_STRING([--enable-progress-meter],[Enable progress-meter])
AC_HELP_STRING([--disable-progress-meter],[Disable progress-meter]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_PROGRESS_METER, 1, [disable progress-meter])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable shuffle DNS support
dnl
AC_MSG_CHECKING([whether to support DNS shuffling])
AC_ARG_ENABLE(dnsshuffle,
AC_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling])
AC_HELP_STRING([--disable-dnsshuffle],[Disable DNS shuffling]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable the curl_easy_options API
dnl
AC_MSG_CHECKING([whether to support curl_easy_option*])
AC_ARG_ENABLE(get-easy-option,
AC_HELP_STRING([--enable-get-easy-options],[Enable curl_easy_options])
AC_HELP_STRING([--disable-get-easy-options],[Disable curl_easy_options]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_GETOPTIONS, 1, [to disable curl_easy_options])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl switch on/off alt-svc
dnl
AC_MSG_CHECKING([whether to support alt-svc])
AC_ARG_ENABLE(alt-svc,
AC_HELP_STRING([--enable-alt-svc],[Enable alt-svc support])
AC_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc])
       curl_altsvc_msg="no";
       enable_altsvc="no"
       ;;
  *) AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(no)
)

dnl ************************************************************
dnl switch on/off hsts
dnl
curl_hsts_msg="no      (--enable-hsts)";
AC_MSG_CHECKING([whether to support HSTS])
AC_ARG_ENABLE(hsts,
AC_HELP_STRING([--enable-hsts],[Enable HSTS support])
AC_HELP_STRING([--disable-hsts],[Disable HSTS support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       ;;
  *) AC_MSG_RESULT(yes)
       curl_hsts_msg="enabled";
       enable_hsts="yes"







|
|
















|
|
















|
|
















|
|
















|
|
















|
|
















|
|
















|
|
















|
|
















|
|
















|
|



















|
|







4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
fi

dnl ************************************************************
dnl disable cookies support
dnl
AC_MSG_CHECKING([whether to support cookies])
AC_ARG_ENABLE(cookies,
AS_HELP_STRING([--enable-cookies],[Enable cookies support])
AS_HELP_STRING([--disable-cookies],[Disable cookies support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable socketpair
dnl
AC_MSG_CHECKING([whether to support socketpair])
AC_ARG_ENABLE(socketpair,
AS_HELP_STRING([--enable-socketpair],[Enable socketpair support])
AS_HELP_STRING([--disable-socketpair],[Disable socketpair support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SOCKETPAIR, 1, [to disable socketpair support])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable HTTP authentication support
dnl
AC_MSG_CHECKING([whether to support HTTP authentication])
AC_ARG_ENABLE(http-auth,
AS_HELP_STRING([--enable-http-auth],[Enable HTTP authentication support])
AS_HELP_STRING([--disable-http-auth],[Disable HTTP authentication support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_HTTP_AUTH, 1, [disable HTTP authentication])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable DoH support
dnl
AC_MSG_CHECKING([whether to support DoH])
AC_ARG_ENABLE(doh,
AS_HELP_STRING([--enable-doh],[Enable DoH support])
AS_HELP_STRING([--disable-doh],[Disable DoH support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_DOH, 1, [disable DoH])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable mime API support
dnl
AC_MSG_CHECKING([whether to support the MIME API])
AC_ARG_ENABLE(mime,
AS_HELP_STRING([--enable-mime],[Enable mime API support])
AS_HELP_STRING([--disable-mime],[Disable mime API support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_MIME, 1, [disable mime API])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable date parsing
dnl
AC_MSG_CHECKING([whether to support date parsing])
AC_ARG_ENABLE(dateparse,
AS_HELP_STRING([--enable-dateparse],[Enable date parsing])
AS_HELP_STRING([--disable-dateparse],[Disable date parsing]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_PARSEDATE, 1, [disable date parsing])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable netrc
dnl
AC_MSG_CHECKING([whether to support netrc parsing])
AC_ARG_ENABLE(netrc,
AS_HELP_STRING([--enable-netrc],[Enable netrc parsing])
AS_HELP_STRING([--disable-netrc],[Disable netrc parsing]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_NETRC, 1, [disable netrc parsing])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable progress-meter
dnl
AC_MSG_CHECKING([whether to support progress-meter])
AC_ARG_ENABLE(progress-meter,
AS_HELP_STRING([--enable-progress-meter],[Enable progress-meter])
AS_HELP_STRING([--disable-progress-meter],[Disable progress-meter]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_PROGRESS_METER, 1, [disable progress-meter])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable shuffle DNS support
dnl
AC_MSG_CHECKING([whether to support DNS shuffling])
AC_ARG_ENABLE(dnsshuffle,
AS_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling])
AS_HELP_STRING([--disable-dnsshuffle],[Disable DNS shuffling]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable the curl_easy_options API
dnl
AC_MSG_CHECKING([whether to support curl_easy_option*])
AC_ARG_ENABLE(get-easy-option,
AS_HELP_STRING([--enable-get-easy-options],[Enable curl_easy_options])
AS_HELP_STRING([--disable-get-easy-options],[Disable curl_easy_options]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_GETOPTIONS, 1, [to disable curl_easy_options])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl switch on/off alt-svc
dnl
AC_MSG_CHECKING([whether to support alt-svc])
AC_ARG_ENABLE(alt-svc,
AS_HELP_STRING([--enable-alt-svc],[Enable alt-svc support])
AS_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc])
       curl_altsvc_msg="no";
       enable_altsvc="no"
       ;;
  *) AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(no)
)

dnl ************************************************************
dnl switch on/off hsts
dnl
curl_hsts_msg="no      (--enable-hsts)";
AC_MSG_CHECKING([whether to support HSTS])
AC_ARG_ENABLE(hsts,
AS_HELP_STRING([--enable-hsts],[Enable HSTS support])
AS_HELP_STRING([--disable-hsts],[Disable HSTS support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       ;;
  *) AC_MSG_RESULT(yes)
       curl_hsts_msg="enabled";
       enable_hsts="yes"
5098
5099
5100
5101
5102
5103
5104




5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122


5123
5124
5125
5126

5127





5128
5129
5130
5131
5132
5133
5134
if test "x$HAVE_GSSAPI" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
fi

if test "x$curl_psl_msg" = "xenabled"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
fi





if test "x$enable_altsvc" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc"
fi
if test "x$enable_hsts" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
fi



if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
  if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
      -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
      -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1" \

      -o "x$WOLFSSL_NTLM" = "x1"; then





    SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"

    if test "x$CURL_DISABLE_HTTP" != "x1" -a \
        "x$NTLM_WB_ENABLED" = "x1"; then
      SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
    fi
  fi







>
>
>
>


















>
>

|
|
|
>

>
>
>
>
>







5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
if test "x$HAVE_GSSAPI" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
fi

if test "x$curl_psl_msg" = "xenabled"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
fi

if test "x$curl_gsasl_msg" = "xenabled"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES GSASL"
fi

if test "x$enable_altsvc" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc"
fi
if test "x$enable_hsts" = "xyes"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
fi

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
  SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
fi

use_curl_ntlm_core=no

if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
  if test "x$OPENSSL_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
      -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
      -o "x$SECURETRANSPORT_ENABLED" = "x1" \
      -o "x$USE_WIN32_CRYPTO" = "x1" \
      -o "x$WOLFSSL_NTLM" = "x1"; then
    use_curl_ntlm_core=yes
  fi

  if test "x$use_curl_ntlm_core" = "xyes" \
      -o "x$USE_WINDOWS_SSPI" = "x1"; then
    SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"

    if test "x$CURL_DISABLE_HTTP" != "x1" -a \
        "x$NTLM_WB_ENABLED" = "x1"; then
      SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
    fi
  fi
5157
5158
5159
5160
5161
5162
5163







5164
5165
5166
5167
5168
5169
5170
    SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
  fi
fi

if test "x$ECH_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES ECH"
fi








dnl replace spaces with newlines
dnl sort the lines
dnl replace the newlines back to spaces
SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '`
AC_SUBST(SUPPORT_FEATURES)








>
>
>
>
>
>
>







5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
    SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
  fi
fi

if test "x$ECH_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES ECH"
fi

if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
  if test ${ac_cv_sizeof_off_t} -gt 4 -o \
     "$curl_win32_file_api" = "win32_large_files"; then
    SUPPORT_FEATURES="$SUPPORT_FEATURES Largefile"
  fi
fi

dnl replace spaces with newlines
dnl sort the lines
dnl replace the newlines back to spaces
SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '`
AC_SUBST(SUPPORT_FEATURES)

5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
if test "x$CURL_DISABLE_IMAP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
  fi
fi
if test "x$CURL_DISABLE_SMB" != "x1" \
    -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
    -a \( "x$OPENSSL_ENABLED" = "x1" \
      -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
      -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1" \
      -o "x$WOLFSSL_NTLM" = "x1" \); then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
  fi
fi
if test "x$CURL_DISABLE_SMTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"







<
<
<
<
|







5340
5341
5342
5343
5344
5345
5346




5347
5348
5349
5350
5351
5352
5353
5354
if test "x$CURL_DISABLE_IMAP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
  fi
fi
if test "x$CURL_DISABLE_SMB" != "x1" \




    -a "x$use_curl_ntlm_core" = "xyes"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
  fi
fi
if test "x$CURL_DISABLE_SMTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
5333
5334
5335
5336
5337
5338
5339

5340
5341
5342
5343
5344
5345
5346
  curl version:     ${CURLVERSION}
  SSL:              ${curl_ssl_msg}
  SSH:              ${curl_ssh_msg}
  zlib:             ${curl_zlib_msg}
  brotli:           ${curl_brotli_msg}
  zstd:             ${curl_zstd_msg}
  GSS-API:          ${curl_gss_msg}

  TLS-SRP:          ${curl_tls_srp_msg}
  resolver:         ${curl_res_msg}
  IPv6:             ${curl_ipv6_msg}
  Unix sockets:     ${curl_unix_sockets_msg}
  IDN:              ${curl_idn_msg}
  Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
  Built-in manual:  ${curl_manual_msg}







>







5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
  curl version:     ${CURLVERSION}
  SSL:              ${curl_ssl_msg}
  SSH:              ${curl_ssh_msg}
  zlib:             ${curl_zlib_msg}
  brotli:           ${curl_brotli_msg}
  zstd:             ${curl_zstd_msg}
  GSS-API:          ${curl_gss_msg}
  GSASL:            ${curl_gsasl_msg}
  TLS-SRP:          ${curl_tls_srp_msg}
  resolver:         ${curl_res_msg}
  IPv6:             ${curl_ipv6_msg}
  Unix sockets:     ${curl_unix_sockets_msg}
  IDN:              ${curl_idn_msg}
  Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
  Built-in manual:  ${curl_manual_msg}
Changes to jni/curl/docs/BUG-BOUNTY.md.
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

# Regarding taxes, etc. on the bounties

In the event that the individual receiving a curl bug bounty needs to pay
taxes on the reward money, the responsibility lies with the receiver. The
curl project or its security team never actually receive any of this money,
hold the money, or pay out the money.

## Bonus levels

In cooperation with [Dropbox](https://www.dropbox.com) the curl bug bounty can
offer the highest levels of rewards if the issue covers one of the interest
areas of theirs - and only if the bug is graded *high* or *critical*. A
non-exhaustive list of vulnerabilities Dropbox is interested in are:

 - RCE
 - URL parsing vulnerabilities with demonstrable security impact

Dropbox would generally hand out rewards for critical vulnerabilities ranging
from 12k-32k USD where RCE is on the upper end of the spectrum.

URL parsing vulnerabilities with demonstrable security impact might include
incorrectly determining the authority of a URL when a special character is
inserted into the path of the URL (as a hypothetical). This type of
vulnerability would likely yield 6k-12k unless further impact could be
demonstrated.







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
77
78
79
80
81
82
83




















# Regarding taxes, etc. on the bounties

In the event that the individual receiving a curl bug bounty needs to pay
taxes on the reward money, the responsibility lies with the receiver. The
curl project or its security team never actually receive any of this money,
hold the money, or pay out the money.



















Changes to jni/curl/docs/BUGS.md.
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266

## Lack of time/interest

 Bugs that are filed and are understood can unfortunately end up in the
 "nobody cares enough about it to work on it" category. Such bugs are
 perfectly valid problems that *should* get fixed but apparently aren't. We
 try to mark such bugs as `KNOWN_BUGS material` after a time of inactivity and
 if no activity is noticed after yet some time those bugs are added to
 `KNOWN_BUGS` and are closed in the issue tracker.

## `KNOWN_BUGS`

 This is a list of known bugs. Bugs we know exist and that have been pointed
 out but that haven't yet been fixed. The reasons for why they haven't been
 fixed can involve anything really, but the primary reason is that nobody has
 considered these problems to be important enough to spend the necessary time
 and effort to have them fixed.

 The `KNOWN_BUGS` are always up for grabs and we will always love the ones who
 bring one of them back to live and offers solutions to them.

 The `KNOWN_BUGS` document has a sibling document known as `TODO`.

## `TODO`

 Issues that are filed or reported that aren't really bugs but more missing
 features or ideas for future improvements and so on are marked as
 'enhancement' or 'feature-request' and will be added to the `TODO` document
 instead and the issue is closed. We don't keep TODO items in the issue
 tracker.

 The `TODO` document is full of ideas and suggestions of what we can add or
 fix one day. You're always encouraged and free to grab one of those items and
 take up a discussion with the curl development team on how that could be
 implemented or provided in the project so that you can work on ticking it odd
 that document.

 If the issue is rather a bug and not a missing feature or functionality, it
 is listed in `KNOWN_BUGS` instead.

## Closing off stalled bugs

 The [issue and pull request trackers](https://github.com/curl/curl) only
 holds "active" entries open (using a non-precise definition of what active
 actually is, but they're at least not completely dead). Those that are
 abandoned or in other ways dormant will be closed and sometimes added to
 `TODO` and `KNOWN_BUGS` instead.

 This way, we only have "active" issues open on github. Irrelevant issues and
 pull requests will not distract developers or casual visitors.







|
|









|
|








|








|
|









|

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266

## Lack of time/interest

 Bugs that are filed and are understood can unfortunately end up in the
 "nobody cares enough about it to work on it" category. Such bugs are
 perfectly valid problems that *should* get fixed but apparently aren't. We
 try to mark such bugs as `KNOWN_BUGS material` after a time of inactivity and
 if no activity is noticed after yet some time those bugs are added to the
 `KNOWN_BUGS` document and are closed in the issue tracker.

## `KNOWN_BUGS`

 This is a list of known bugs. Bugs we know exist and that have been pointed
 out but that haven't yet been fixed. The reasons for why they haven't been
 fixed can involve anything really, but the primary reason is that nobody has
 considered these problems to be important enough to spend the necessary time
 and effort to have them fixed.

 The `KNOWN_BUGS` items are always up for grabs and we love the ones who bring
 one of them back to life and offer solutions to them.

 The `KNOWN_BUGS` document has a sibling document known as `TODO`.

## `TODO`

 Issues that are filed or reported that aren't really bugs but more missing
 features or ideas for future improvements and so on are marked as
 'enhancement' or 'feature-request' and will be added to the `TODO` document
 and the issues are closed. We don't keep TODO items open in the issue
 tracker.

 The `TODO` document is full of ideas and suggestions of what we can add or
 fix one day. You're always encouraged and free to grab one of those items and
 take up a discussion with the curl development team on how that could be
 implemented or provided in the project so that you can work on ticking it odd
 that document.

 If an issue is rather a bug and not a missing feature or functionality, it is
 listed in `KNOWN_BUGS` instead.

## Closing off stalled bugs

 The [issue and pull request trackers](https://github.com/curl/curl) only
 holds "active" entries open (using a non-precise definition of what active
 actually is, but they're at least not completely dead). Those that are
 abandoned or in other ways dormant will be closed and sometimes added to
 `TODO` and `KNOWN_BUGS` instead.

 This way, we only have "active" issues open on GitHub. Irrelevant issues and
 pull requests will not distract developers or casual visitors.
Changes to jni/curl/docs/CODE_STYLE.md.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

Try using a non-confusing naming scheme for your new functions and variable
names. It doesn't necessarily have to mean that you should use the same as in
other places of the code, just that the names should be logical,
understandable and be named according to what they're used for. File-local
functions should be made static. We like lower case names.

See the [INTERNALS](INTERNALS.md) document on how we name non-exported
library-global symbols.

## Indenting

We use only spaces for indentation, never TABs. We use two spaces for each new
open brace.

```c







|
|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

Try using a non-confusing naming scheme for your new functions and variable
names. It doesn't necessarily have to mean that you should use the same as in
other places of the code, just that the names should be logical,
understandable and be named according to what they're used for. File-local
functions should be made static. We like lower case names.

See the [INTERNALS](https://curl.se/dev/internals.html#symbols) document on
how we name non-exported library-global symbols.

## Indenting

We use only spaces for indentation, never TABs. We use two spaces for each new
open brace.

```c
Changes to jni/curl/docs/FAQ.
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
  curl has been written to use a generic SSL function layer internally, and
  that SSL functionality can then be provided by one out of many different SSL
  backends.

  curl can be built to use one of the following SSL alternatives: OpenSSL,
  libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
  Transport (native iOS/OS X), Schannel (native Windows), GSKit (native IBM
  i), or BearSSL. They all have their pros and cons, and we try to maintain a
  comparison of them here: https://curl.se/docs/ssl-compared.html

  2.4 Does curl support SOCKS (RFC 1928) ?

  Yes, SOCKS 4 and 5 are supported.

3. Usage problems








|
|







413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
  curl has been written to use a generic SSL function layer internally, and
  that SSL functionality can then be provided by one out of many different SSL
  backends.

  curl can be built to use one of the following SSL alternatives: OpenSSL,
  libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
  Transport (native iOS/OS X), Schannel (native Windows), GSKit (native IBM
  i), BearSSL, or Rustls. They all have their pros and cons, and we try to
  maintain a comparison of them here: https://curl.se/docs/ssl-compared.html

  2.4 Does curl support SOCKS (RFC 1928) ?

  Yes, SOCKS 4 and 5 are supported.

3. Usage problems

Changes to jni/curl/docs/HISTORY.md.
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137




138
139
140
141
142
143
144
deemed "GPL incompatible".)

March 22: curl supports HTTP 1.1 starting with the release of 7.7. This
also introduced libcurl's ability to do persistent connections. 24000 lines of
code. The libcurl major SONAME number was bumped to 2 due to this overhaul.
The first experimental ftps:// support was added.

August: curl is bundled in Mac OS X, 10.1. It was already becoming more and
more of a standard utility of Linux distributions and a regular in the BSD
ports collections. The curl website gets 8000 visits weekly. Curl Corporation
contacted Daniel to discuss "the name issue". After Daniel's reply, they have
never since got back in touch again.

September: libcurl 7.9 introduces cookie jar and curl_formadd(). During the
forthcoming 7.9.x releases, we introduced the multi interface slowly and
without many whistles.





2002
----

June: the curl website gets 13000 visits weekly. curl and libcurl is
35000 lines of code. Reported successful compiles on more than 40 combinations
of CPUs and operating systems.







<
<
|
|
|




>
>
>
>







122
123
124
125
126
127
128


129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
deemed "GPL incompatible".)

March 22: curl supports HTTP 1.1 starting with the release of 7.7. This
also introduced libcurl's ability to do persistent connections. 24000 lines of
code. The libcurl major SONAME number was bumped to 2 due to this overhaul.
The first experimental ftps:// support was added.



August: The curl website gets 8000 visits weekly. Curl Corporation contacted
Daniel to discuss "the name issue". After Daniel's reply, they have never
since got back in touch again.

September: libcurl 7.9 introduces cookie jar and curl_formadd(). During the
forthcoming 7.9.x releases, we introduced the multi interface slowly and
without many whistles.

September 25: curl (7.7.2) is bundled in Mac OS X (10.1) for the first time. It was
already becoming more and more of a standard utility of Linux distributions
and a regular in the BSD ports collections.

2002
----

June: the curl website gets 13000 visits weekly. curl and libcurl is
35000 lines of code. Reported successful compiles on more than 40 combinations
of CPUs and operating systems.
398
399
400
401
402
403
404
405
406







 March: removed support for PolarSSL, added wolfSSH support

 April: experimental MQTT support

 August: zstd support

 November: the website moves to www.curl.se. The website serves 10TB data
 monthly.













|
|
>
>
>
>
>
>
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414

 March: removed support for PolarSSL, added wolfSSH support

 April: experimental MQTT support

 August: zstd support

 November: the website moves to curl.se. The website serves 10TB data monthly.

2021
----

 February 3: curl 7.75.0 ships with support for Hyper is a HTTP backend

 March 31: curl 7.76.0 ships with support for rustls
Changes to jni/curl/docs/HTTP2.md.
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
HTTP/2 without HTTP/1.1 Upgrade.

Since 7.47.0, the curl tool enables HTTP/2 by default for HTTPS connections.

curl tool limitations
---------------------

The command line tool won't do any HTTP/2 multiplexing even though libcurl
supports it, simply because the curl tool is not written to take advantage of
the libcurl API that's necessary for this (the multi interface). We have an
outstanding TODO item for this and **you** can help us make it happen.

The command line tool also doesn't support HTTP/2 server push for the same
reason it doesn't do multiplexing: it needs to use the multi interface for
that so that multiplexing is supported.

HTTP Alternative Services
-------------------------








<
<
<
<
<







101
102
103
104
105
106
107





108
109
110
111
112
113
114
HTTP/2 without HTTP/1.1 Upgrade.

Since 7.47.0, the curl tool enables HTTP/2 by default for HTTPS connections.

curl tool limitations
---------------------






The command line tool also doesn't support HTTP/2 server push for the same
reason it doesn't do multiplexing: it needs to use the multi interface for
that so that multiplexing is supported.

HTTP Alternative Services
-------------------------

Changes to jni/curl/docs/KNOWN_BUGS.
8
9
10
11
12
13
14

15
16
17
18
19
20
21

These are problems and bugs known to exist at the time of this release. Feel
free to join in and help us correct one or more of these! Also be sure to
check the changelog of the current development status, as one or more of these
problems may have been fixed or changed somewhat since this was written!

 1. HTTP

 1.2 Multiple methods in a single WWW-Authenticate: header
 1.3 STARTTRANSFER time is wrong for HTTP POSTs
 1.4 multipart formposts file name encoding
 1.5 Expect-100 meets 417
 1.6 Unnecessary close when 401 received waiting for 100
 1.7 Deflate error after all content was received
 1.8 DoH isn't used for all name resolves when enabled







>







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

These are problems and bugs known to exist at the time of this release. Feel
free to join in and help us correct one or more of these! Also be sure to
check the changelog of the current development status, as one or more of these
problems may have been fixed or changed somewhat since this was written!

 1. HTTP
 1.1 Excessive HTTP/2 packets with TCP_NODELAY
 1.2 Multiple methods in a single WWW-Authenticate: header
 1.3 STARTTRANSFER time is wrong for HTTP POSTs
 1.4 multipart formposts file name encoding
 1.5 Expect-100 meets 417
 1.6 Unnecessary close when 401 received waiting for 100
 1.7 Deflate error after all content was received
 1.8 DoH isn't used for all name resolves when enabled
109
110
111
112
113
114
115

116
117
118
119
120
121
122
 11.8 DoH leaks memory after followlocation
 11.9 DoH doesn't inherit all transfer options
 11.10 Blocking socket operations in non-blocking API
 11.11 A shared connection cache is not thread-safe
 11.12 'no_proxy' string-matches IPv6 numerical addresses
 11.13 wakeup socket disconnect causes havoc
 11.14 Multi perform hangs waiting for threaded resolver


 12. LDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?
 12.3 LDAP on Windows doesn't work
 12.4 LDAPS with NSS is slow








>







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
 11.8 DoH leaks memory after followlocation
 11.9 DoH doesn't inherit all transfer options
 11.10 Blocking socket operations in non-blocking API
 11.11 A shared connection cache is not thread-safe
 11.12 'no_proxy' string-matches IPv6 numerical addresses
 11.13 wakeup socket disconnect causes havoc
 11.14 Multi perform hangs waiting for threaded resolver
 11.15 CURLOPT_OPENSOCKETPAIRFUNCTION is missing

 12. LDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?
 12.3 LDAP on Windows doesn't work
 12.4 LDAPS with NSS is slow

134
135
136
137
138
139
140

141
142
143
144
145
146
147










148
149
150
151
152
153
154
 15.5 build on Linux links libcurl to libdl
 15.6 uses -lpthread instead of Threads::Threads
 15.7 generated .pc file contains strange entries
 15.8 libcurl.pc uses absolute library paths
 15.9 cert paths autodetected when cross-compiling
 15.10 libspsl is not supported
 15.11 ExternalProject_Add does not set CURL_CA_PATH


 16. Applications
 16.1 pulseUI VPN client

==============================================================================

1. HTTP











1.2 Multiple methods in a single WWW-Authenticate: header

 The HTTP responses headers WWW-Authenticate: can provide information about
 multiple authentication methods as multiple headers or as several methods
 within a single header. The latter way, several methods in the same physical
 line, is not supported by libcurl's parser. (For no good reason.)







>







>
>
>
>
>
>
>
>
>
>







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
 15.5 build on Linux links libcurl to libdl
 15.6 uses -lpthread instead of Threads::Threads
 15.7 generated .pc file contains strange entries
 15.8 libcurl.pc uses absolute library paths
 15.9 cert paths autodetected when cross-compiling
 15.10 libspsl is not supported
 15.11 ExternalProject_Add does not set CURL_CA_PATH
 15.12 cannot enable LDAPS on Windows

 16. Applications
 16.1 pulseUI VPN client

==============================================================================

1. HTTP

1.1 Excessive HTTP/2 packets with TCP_NODELAY

 Because of how curl sets TCP_NODELAY by default, HTTP/2 requests are issued
 using more separate TCP packets than it would otherwise need to use. This
 means spending more bytes than it has to. Just disabling TCP_NODELAY for
 HTTP/2 is also not the correct fix because that then makes the outgoing
 packets to get delayed.

 See https://github.com/curl/curl/issues/6363

1.2 Multiple methods in a single WWW-Authenticate: header

 The HTTP responses headers WWW-Authenticate: can provide information about
 multiple authentication methods as multiple headers or as several methods
 within a single header. The latter way, several methods in the same physical
 line, is not supported by libcurl's parser. (For no good reason.)
809
810
811
812
813
814
815










816
817
818
819
820
821
822
823

11.8 DoH leaks memory after followlocation

 https://github.com/curl/curl/issues/4592

11.9 DoH doesn't inherit all transfer options











 https://github.com/curl/curl/issues/4578

11.10 Blocking socket operations in non-blocking API

 The list of blocking socket operations is in TODO section "More non-blocking".

11.11 A shared connection cache is not thread-safe








>
>
>
>
>
>
>
>
>
>
|







822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846

11.8 DoH leaks memory after followlocation

 https://github.com/curl/curl/issues/4592

11.9 DoH doesn't inherit all transfer options

 Some options are not inherited because they are not relevant for the DoH SSL
 connections, or inheriting the option may result in unexpected behavior. For
 example the user's debug function callback is not inherited because it would
 be unexpected for internal handles (ie DoH handles) to be passed to that
 callback.

 If an option is not inherited then it is not possible to set it separately for
 DoH without a DoH-specific option. For example: CURLOPT_DOH_SSL_VERIFYHOST,
 CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS.

 See https://github.com/curl/curl/issues/6605

11.10 Blocking socket operations in non-blocking API

 The list of blocking socket operations is in TODO section "More non-blocking".

11.11 A shared connection cache is not thread-safe

850
851
852
853
854
855
856









857
858
859
860
861
862
863

 If a threaded resolver takes a long time to complete, libcurl can be blocked
 waiting for it for a longer time than expected - and longer than the set
 timeouts.

 See https://github.com/curl/curl/issues/2975 and
 https://github.com/curl/curl/issues/4852










12. LDAP

12.1 OpenLDAP hangs after returning results

 By configuration defaults, openldap automatically chase referrals on
 secondary socket descriptors. The OpenLDAP backend is asynchronous and thus







>
>
>
>
>
>
>
>
>







873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895

 If a threaded resolver takes a long time to complete, libcurl can be blocked
 waiting for it for a longer time than expected - and longer than the set
 timeouts.

 See https://github.com/curl/curl/issues/2975 and
 https://github.com/curl/curl/issues/4852

11.15 CURLOPT_OPENSOCKETPAIRFUNCTION is missing

 When libcurl creates sockets with socketpair(), those are not "exposed" in
 CURLOPT_OPENSOCKETFUNCTION and therefore might surprise and be unknown to
 applications that expects and wants all sockets known beforehand. One way to
 address this issue is to introduce a CURLOPT_OPENSOCKETPAIRFUNCTION callback.

 https://github.com/curl/curl/issues/5747

12. LDAP

12.1 OpenLDAP hangs after returning results

 By configuration defaults, openldap automatically chase referrals on
 secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
970
971
972
973
974
975
976




977
978
979
980
981
982
983
15.11 ExternalProject_Add does not set CURL_CA_PATH

 CURL_CA_BUNDLE and CURL_CA_PATH are not set properly when cmake's
 ExternalProject_Add is used to build curl as a dependency.

 See https://github.com/curl/curl/issues/6313





16. Applications

16.1 pulseUI VPN client

 This application crashes at startup with libcurl 7.74.0 (and presumably later
 versions too) after we cleaned up OpenSSL initialization. Since this is the
 only known application to do this, we suspect it is related to something they







>
>
>
>







1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
15.11 ExternalProject_Add does not set CURL_CA_PATH

 CURL_CA_BUNDLE and CURL_CA_PATH are not set properly when cmake's
 ExternalProject_Add is used to build curl as a dependency.

 See https://github.com/curl/curl/issues/6313

15.12 cannot enable LDAPS on Windows

 See https://github.com/curl/curl/issues/6284

16. Applications

16.1 pulseUI VPN client

 This application crashes at startup with libcurl 7.74.0 (and presumably later
 versions too) after we cleaned up OpenSSL initialization. Since this is the
 only known application to do this, we suspect it is related to something they
Changes to jni/curl/docs/Makefile.am.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
76
77
78
79
80
81
82

83
84
85
86
87
88
89
 MAIL-ETIQUETTE                                 \
 MQTT.md                                        \
 NEW-PROTOCOL.md                                \
 options-in-versions                            \
 PARALLEL-TRANSFERS.md                          \
 README.md                                      \
 RELEASE-PROCEDURE.md                           \

 ROADMAP.md                                     \
 SECURITY-PROCESS.md                            \
 SSL-PROBLEMS.md                                \
 SSLCERTS.md                                    \
 THANKS                                         \
 TODO                                           \
 TheArtOfHttpScripting.md                       \







>







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 MAIL-ETIQUETTE                                 \
 MQTT.md                                        \
 NEW-PROTOCOL.md                                \
 options-in-versions                            \
 PARALLEL-TRANSFERS.md                          \
 README.md                                      \
 RELEASE-PROCEDURE.md                           \
 RUSTLS.md                                      \
 ROADMAP.md                                     \
 SECURITY-PROCESS.md                            \
 SSL-PROBLEMS.md                                \
 SSLCERTS.md                                    \
 THANKS                                         \
 TODO                                           \
 TheArtOfHttpScripting.md                       \
Changes to jni/curl/docs/Makefile.in.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397

398
399
400



401
402
403
404
405
406
407
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







376
377
378
379
380
381
382

383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
513
514
515
516
517
518
519

520
521
522
523
524
525
526
 MAIL-ETIQUETTE                                 \
 MQTT.md                                        \
 NEW-PROTOCOL.md                                \
 options-in-versions                            \
 PARALLEL-TRANSFERS.md                          \
 README.md                                      \
 RELEASE-PROCEDURE.md                           \

 ROADMAP.md                                     \
 SECURITY-PROCESS.md                            \
 SSL-PROBLEMS.md                                \
 SSLCERTS.md                                    \
 THANKS                                         \
 TODO                                           \
 TheArtOfHttpScripting.md                       \







>







516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
 MAIL-ETIQUETTE                                 \
 MQTT.md                                        \
 NEW-PROTOCOL.md                                \
 options-in-versions                            \
 PARALLEL-TRANSFERS.md                          \
 README.md                                      \
 RELEASE-PROCEDURE.md                           \
 RUSTLS.md                                      \
 ROADMAP.md                                     \
 SECURITY-PROCESS.md                            \
 SSL-PROBLEMS.md                                \
 SSLCERTS.md                                    \
 THANKS                                         \
 TODO                                           \
 TheArtOfHttpScripting.md                       \
Changes to jni/curl/docs/RELEASE-PROCEDURE.md.
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106





107
108
109
110

Coming dates
------------

Based on the description above, here are some planned release dates (at the
time of this writing):

- August 19, 2020 (7.72.0)
- October 14, 2020
- December 9, 2020
- February 3, 2021
- March 31, 2021
- May 26, 2021
- July 21, 2021
- September 15, 2021
- November 10, 2021






The above (and more) curl-related dates are published in
[iCalendar format](https://calendar.google.com/calendar/ical/c9u5d64odop9js55oltfarjk6g%40group.calendar.google.com/public/basic.ics)
as well.







<
<
<
<
|




>
>
>
>
>




91
92
93
94
95
96
97




98
99
100
101
102
103
104
105
106
107
108
109
110
111

Coming dates
------------

Based on the description above, here are some planned release dates (at the
time of this writing):





- March 31, 2021 (7.76.0)
- May 26, 2021
- July 21, 2021
- September 15, 2021
- November 10, 2021
- January 5, 2022
- March 2, 2022
- April 27, 2022
- June 22, 2022
- August 17, 2022

The above (and more) curl-related dates are published in
[iCalendar format](https://calendar.google.com/calendar/ical/c9u5d64odop9js55oltfarjk6g%40group.calendar.google.com/public/basic.ics)
as well.
Added jni/curl/docs/RUSTLS.md.




















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Rustls

[Rustls is a TLS backend written in Rust.](https://docs.rs/rustls/). Curl can
be built to use it as an alternative to OpenSSL or other TLS backends. We use
the [crustls C bindings](https://github.com/abetterinternet/crustls/). This
version of curl depends on version v0.4.0 of crustls.

# Building with rustls

First, [install Rust](https://rustup.rs/).

Next, check out, build, and install the appropriate version of crustls:

    % cargo install cbindgen
    % git clone https://github.com/abetterinternet/crustls/ -b v0.4.0
    % cd crustls
    % make
    % make DESTDIR=${HOME}/crustls-built/ install

Now configure and build curl with rustls:

    % git clone https://github.com/curl/curl
    % cd curl
    % ./buildconf
    % ./configure --without-ssl --with-rustls=${HOME}/crustls-built
    % make
Changes to jni/curl/docs/SSL-PROBLEMS.md.
19
20
21
22
23
24
25
26
27










28
29
30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
  CA certs are used to digitally verify the server's certificate. You need a
  "ca bundle" for this. See lots of more details on this in the SSLCERTS
  document.

## CA bundle missing intermediate certificates

  When using said CA bundle to verify a server cert, you will experience
  problems if your CA cert does not have the certificates for the
  intermediates in the whole trust chain.











## Protocol version

  Some broken servers fail to support the protocol negotiation properly that
  SSL servers are supposed to handle. This may cause the connection to fail
  completely. Sometimes you may need to explicitly select a SSL version to use
  when connecting to make the connection succeed.

  An additional complication can be that modern SSL libraries sometimes are
  built with support for older SSL and TLS versions disabled!


  All versions of SSL are considered insecure and should be avoided. Use TLS.

## Ciphers

  Clients give servers a list of ciphers to select from. If the list doesn't
  include any ciphers the server wants/can use, the connection handshake
  fails.








|
|
>
>
>
>
>
>
>
>
>
>











>
|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  CA certs are used to digitally verify the server's certificate. You need a
  "ca bundle" for this. See lots of more details on this in the SSLCERTS
  document.

## CA bundle missing intermediate certificates

  When using said CA bundle to verify a server cert, you will experience
  problems if your CA store does not contain the certificates for the
  intermediates if the server doesn't provide them.

  The TLS protocol mandates that the intermediate certificates are sent in the
  handshake, but as browsers have ways to survive or work around such
  omissions, missing intermediates in TLS handshakes still happen that
  browser-users won't notice.

  Browsers work around this problem in two ways: they cache intermediate
  certificates from previous transfers and some implement the TLS "AIA"
  extension that lets the client explicitly download such cerfificates on
  demand.

## Protocol version

  Some broken servers fail to support the protocol negotiation properly that
  SSL servers are supposed to handle. This may cause the connection to fail
  completely. Sometimes you may need to explicitly select a SSL version to use
  when connecting to make the connection succeed.

  An additional complication can be that modern SSL libraries sometimes are
  built with support for older SSL and TLS versions disabled!

  All versions of SSL and the TLS versions before 1.2 are considered insecure
  and should be avoided. Use TLS 1.2 or later.

## Ciphers

  Clients give servers a list of ciphers to select from. If the list doesn't
  include any ciphers the server wants/can use, the connection handshake
  fails.

Changes to jni/curl/docs/THANKS.
41
42
43
44
45
46
47

48
49
50
51
52
53
54
Alain Danteny
Alain Miniussi
Alan Jenkins
Alan Pinstein
Albert Chin-A-Young
Albert Choy
Alejandro Alvarez Ayllon

Alejandro R. Sedeño
Aleksandar Milivojevic
Aleksey Tulinov
Ales Mlakar
Ales Novak
Alessandro Ghedini
Alessandro Vesely







>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Alain Danteny
Alain Miniussi
Alan Jenkins
Alan Pinstein
Albert Chin-A-Young
Albert Choy
Alejandro Alvarez Ayllon
Alejandro Colomar
Alejandro R. Sedeño
Aleksandar Milivojevic
Aleksey Tulinov
Ales Mlakar
Ales Novak
Alessandro Ghedini
Alessandro Vesely
68
69
70
71
72
73
74

75
76
77
78
79
80
81
Alex Neblett
Alex Nichols
Alex Potapenko
Alex Rousskov
Alex Samorukov
Alex Suykov
Alex Vinnik

Alexander Beedie
Alexander Dyagilev
Alexander Elgert
Alexander Klauer
Alexander Kourakos
Alexander Krasnostavsky
Alexander Lazic







>







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Alex Neblett
Alex Nichols
Alex Potapenko
Alex Rousskov
Alex Samorukov
Alex Suykov
Alex Vinnik
Alex Xu
Alexander Beedie
Alexander Dyagilev
Alexander Elgert
Alexander Klauer
Alexander Kourakos
Alexander Krasnostavsky
Alexander Lazic
94
95
96
97
98
99
100

101
102
103
104
105
106
107
Alexey Zakhlestin
Alexis Carvalho
Alexis La Goutte
Alfonso Martone
Alfred Gebert
Allen Pulsifer
Alona Rossen

amishmm on github
Amit Katyal
Amol Pattekar
Amr Shahin
Anatol Belski
Anatoli Tubman
Anders Bakken







>







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Alexey Zakhlestin
Alexis Carvalho
Alexis La Goutte
Alfonso Martone
Alfred Gebert
Allen Pulsifer
Alona Rossen
Amaury Denoyelle
amishmm on github
Amit Katyal
Amol Pattekar
Amr Shahin
Anatol Belski
Anatoli Tubman
Anders Bakken
125
126
127
128
129
130
131

132
133
134
135
136
137
138
Andreas Rieke
Andreas Roth
Andreas Schneider
Andreas Schuldei
Andreas Streichardt
Andreas Wurf
Andrei Benea

Andrei Cipu
Andrei Karas
Andrei Kurushin
Andrei Neculau
Andrei Sedoi
Andrei Valeriu BICA
Andrei Virtosu







>







128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Andreas Rieke
Andreas Roth
Andreas Schneider
Andreas Schuldei
Andreas Streichardt
Andreas Wurf
Andrei Benea
Andrei Bica
Andrei Cipu
Andrei Karas
Andrei Kurushin
Andrei Neculau
Andrei Sedoi
Andrei Valeriu BICA
Andrei Virtosu
165
166
167
168
169
170
171

172
173
174
175
176
177
178
anio on github
anshnd on github
Antarpreet Singh
Anthon Pang
Anthony Avina
Anthony Bryan
Anthony G. Basile

Antoine Aubert
Antoine Calando
Anton Bychkov
Anton Gerasimov
Anton Kalmykov
Anton Malov
Anton Yabchinskiy







>







169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
anio on github
anshnd on github
Antarpreet Singh
Anthon Pang
Anthony Avina
Anthony Bryan
Anthony G. Basile
Anthony Ramine
Antoine Aubert
Antoine Calando
Anton Bychkov
Anton Gerasimov
Anton Kalmykov
Anton Malov
Anton Yabchinskiy
189
190
191
192
193
194
195

196
197
198
199
200
201
202
203
204

205
206
207
208
209
210
211
Arnaud Rebillout
Aron Bergman
Aron Rotteveel
Artak Galoyan
Arthur Murray
Arve Knudsen
Arvid Norberg

asavah on github
Ashish Shukla
Ashwin Metpalli
Ask Bjørn Hansen
Askar Safin
Ates Goral
Augustus Saunders
Austin Green
Avery Fay

Axel Tillequin
Ayoub Boudhar
b9a1 on github
Balaji Parasuram
Balaji S Rao
Balaji Salunke
Balazs Kovacsics







>









>







194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
Arnaud Rebillout
Aron Bergman
Aron Rotteveel
Artak Galoyan
Arthur Murray
Arve Knudsen
Arvid Norberg
arvids-kokins-bidstack on github
asavah on github
Ashish Shukla
Ashwin Metpalli
Ask Bjørn Hansen
Askar Safin
Ates Goral
Augustus Saunders
Austin Green
Avery Fay
awesomenode on github
Axel Tillequin
Ayoub Boudhar
b9a1 on github
Balaji Parasuram
Balaji S Rao
Balaji Salunke
Balazs Kovacsics
265
266
267
268
269
270
271

272
273
274
275
276
277
278
Björn Stenberg
Blaise Potard
bnfp on github
Bob Relyea
Bob Richmond
Bob Schader
bobmitchell1956 on github

Bogdan Nicula
Brad Burdick
Brad Fitzpatrick
Brad Harder
Brad Hards
Brad King
Brad Spencer







>







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
Björn Stenberg
Blaise Potard
bnfp on github
Bob Relyea
Bob Richmond
Bob Schader
bobmitchell1956 on github
Bodo Bergmann
Bogdan Nicula
Brad Burdick
Brad Fitzpatrick
Brad Harder
Brad Hards
Brad King
Brad Spencer
317
318
319
320
321
322
323

324
325
326
327
328
329
330
Cameron Cawley
Cameron Kaiser
Cameron MacMinn
Camille Moncelier
Caolan McNamara
Captain Basil
Carie Pointer

Carlo Cannas
Carlo Marcelo Arenas Belón
Carlo Teubner
Carlo Wood
Carlos ORyan
Carsten Lange
Casey O'Donnell







>







325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
Cameron Cawley
Cameron Kaiser
Cameron MacMinn
Camille Moncelier
Caolan McNamara
Captain Basil
Carie Pointer
Carl Zogheib
Carlo Cannas
Carlo Marcelo Arenas Belón
Carlo Teubner
Carlo Wood
Carlos ORyan
Carsten Lange
Casey O'Donnell
487
488
489
490
491
492
493

494
495
496
497

498

499
500
501
502
503
504
505
Davey Shafik
David Bau
David Benjamin
David Binderman
David Blaikie
David Byron
David Cohen

David E. Narváez
David Earl
David Eriksson
David Garske

David Houlder

David Hull
David J Meyer
David James
David Kalnischkies
David Kierznowski
David Kimdon
David L.







>




>

>







496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
Davey Shafik
David Bau
David Benjamin
David Binderman
David Blaikie
David Byron
David Cohen
David Demelier
David E. Narváez
David Earl
David Eriksson
David Garske
David Goerger
David Houlder
David Hu
David Hull
David J Meyer
David James
David Kalnischkies
David Kierznowski
David Kimdon
David L.
606
607
608
609
610
611
612

613
614
615
616
617
618
619
Dwarakanath Yadavalli
Dylan Ellicott
Dylan Salisbury
Dániel Bakai
Early Ehlinger
Earnestly on github
Eason-Yu on github

Ebenezer Ikonne
Ed Morley
Edgaras Janušauskas
Edin Kadribasic
Edmond Yu
Eduard Bloch
Edward Kimmel







>







618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
Dwarakanath Yadavalli
Dylan Ellicott
Dylan Salisbury
Dániel Bakai
Early Ehlinger
Earnestly on github
Eason-Yu on github
ebejan on github
Ebenezer Ikonne
Ed Morley
Edgaras Janušauskas
Edin Kadribasic
Edmond Yu
Eduard Bloch
Edward Kimmel
702
703
704
705
706
707
708

709
710
711
712
713
714
715
Felix Hädicke
Felix Kaiser
Felix von Leitner
Felix Yan
Feng Tu
Fernando Muñoz
Filip Salomonsson

Flameborn on github
Flavio Medeiros
Florian Pritz
Florian Schoppmann
Florian Weimer
Florin Petriuc
Forrest Cahoon







>







715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
Felix Hädicke
Felix Kaiser
Felix von Leitner
Felix Yan
Feng Tu
Fernando Muñoz
Filip Salomonsson
Firefox OS
Flameborn on github
Flavio Medeiros
Florian Pritz
Florian Schoppmann
Florian Weimer
Florin Petriuc
Forrest Cahoon
787
788
789
790
791
792
793

794
795
796
797
798
799
800
Grant Pannell
Greg Hewgill
Greg Morse
Greg Onufer
Greg Pratt
Greg Rowe
Greg Zavertnik

Gregory Jefferis
Gregory Nicholls
Gregory Szorc
Griffin Downs
Grigory Entin
Guenole Bescon
Guido Berhoerster







>







801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
Grant Pannell
Greg Hewgill
Greg Morse
Greg Onufer
Greg Pratt
Greg Rowe
Greg Zavertnik
Gregor Jasny
Gregory Jefferis
Gregory Nicholls
Gregory Szorc
Griffin Downs
Grigory Entin
Guenole Bescon
Guido Berhoerster
897
898
899
900
901
902
903

904
905
906
907
908
909
910
Isaiah Norton
Ishan SinghLevett
Ithubg on github
Ivan Avdeev
IvanoG on github
Ivo Bellin Salarin
iz8mbw on github

Jack Zhang
Jackarain on github
Jacky Lam
Jacob Barthelmeh
Jacob Hoffman-Andrews
Jacob Meuser
Jacob Moshenko







>







912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
Isaiah Norton
Ishan SinghLevett
Ithubg on github
Ivan Avdeev
IvanoG on github
Ivo Bellin Salarin
iz8mbw on github
Jack Boos Yu
Jack Zhang
Jackarain on github
Jacky Lam
Jacob Barthelmeh
Jacob Hoffman-Andrews
Jacob Meuser
Jacob Moshenko
968
969
970
971
972
973
974

975
976
977
978
979
980
981
Jean-Claude Chauve
Jean-Francois Bertrand
Jean-Francois Durand
Jean-Louis Lemaire
Jean-Marc Ranger
Jean-Noël Rouvignac
Jean-Philippe Barrette-LaPierre

Jeff Connelly
Jeff Hodges
Jeff Johnson
Jeff King
Jeff Lawson
Jeff Mears
Jeff Phillips







>







984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
Jean-Claude Chauve
Jean-Francois Bertrand
Jean-Francois Durand
Jean-Louis Lemaire
Jean-Marc Ranger
Jean-Noël Rouvignac
Jean-Philippe Barrette-LaPierre
Jean-Philippe Menil
Jeff Connelly
Jeff Hodges
Jeff Johnson
Jeff King
Jeff Lawson
Jeff Mears
Jeff Phillips
1022
1023
1024
1025
1026
1027
1028

1029
1030
1031
1032
1033
1034
1035
1036
1037

1038
1039
1040
1041
1042
1043
1044
jnbr on github
Jocelyn Jaubert
Joe Halpin
Joe Malicki
Joe Mason
Joel Chen
Joel Depooter

joey-l-us on github
Jofell Gallardo
Johan Anderson
Johan Lantz
Johan Nilsson
Johan van Selst
Johannes Bauer
Johannes Ernst
Johannes G. Kristinsson

Johannes Schindelin
John A. Bristor
John Bradshaw
John Butterfield
John Coffey
John Crow
John David Anglin







>









>







1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
jnbr on github
Jocelyn Jaubert
Joe Halpin
Joe Malicki
Joe Mason
Joel Chen
Joel Depooter
Joel Teichroeb
joey-l-us on github
Jofell Gallardo
Johan Anderson
Johan Lantz
Johan Nilsson
Johan van Selst
Johannes Bauer
Johannes Ernst
Johannes G. Kristinsson
Johannes Lesr
Johannes Schindelin
John A. Bristor
John Bradshaw
John Butterfield
John Coffey
John Crow
John David Anglin
1088
1089
1090
1091
1092
1093
1094

1095
1096
1097
1098

1099
1100
1101

1102
1103
1104
1105
1106
1107
1108
Jonas Vautherin
Jonatan Lander
Jonatan Vela
Jonathan Cardoso Machado
Jonathan Hseu
Jonathan Moerman
Jonathan Nieder

Jongki Suwandi
jonrumsey on github
Joombalaya on github
Joonas Kuorilehto

Jose Alf
Jose Kahan
Josef Wolf

Josh Bialkowski
Josh Kapell
joshhe on github
Joshua Kwan
Joshua Swink
Josie Huddleston
Josue Andrade Gomes







>

<


>



>







1107
1108
1109
1110
1111
1112
1113
1114
1115

1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
Jonas Vautherin
Jonatan Lander
Jonatan Vela
Jonathan Cardoso Machado
Jonathan Hseu
Jonathan Moerman
Jonathan Nieder
Jonathan Watt
Jongki Suwandi

Joombalaya on github
Joonas Kuorilehto
Jordan Brown
Jose Alf
Jose Kahan
Josef Wolf
Joseph Chen
Josh Bialkowski
Josh Kapell
joshhe on github
Joshua Kwan
Joshua Swink
Josie Huddleston
Josue Andrade Gomes
1123
1124
1125
1126
1127
1128
1129

1130
1131
1132
1133
1134
1135
1136
Julian Romero Nieto
Julian Taylor
Julian Z
Julien Chaffraix
Julien Nabet
Julien Royer
Jun-ichiro itojun Hagino

jungle-boogie on github
Junho Choi
Jurij Smakov
Juro Bystricky
Justin Clift
Justin Ehlert
Justin Fletcher







>







1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
Julian Romero Nieto
Julian Taylor
Julian Z
Julien Chaffraix
Julien Nabet
Julien Royer
Jun-ichiro itojun Hagino
Jun-ya Kato
jungle-boogie on github
Junho Choi
Jurij Smakov
Juro Bystricky
Justin Clift
Justin Ehlert
Justin Fletcher
1190
1191
1192
1193
1194
1195
1196

1197
1198
1199
1200
1201
1202
1203
Kjell Ericson
Kjetil Jacobsen
Klaus Crusius
Klaus Stein
Klevtsov Vadim
Kobi Gurkan
Koen Dergent

Konstantin Isakov
Konstantin Kushnir
kotoriのねこ
kouzhudong on github
Kovalkov Dmitrii
kreshano on github
Kris Kennaway







>







1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
Kjell Ericson
Kjetil Jacobsen
Klaus Crusius
Klaus Stein
Klevtsov Vadim
Kobi Gurkan
Koen Dergent
kokke on github
Konstantin Isakov
Konstantin Kushnir
kotoriのねこ
kouzhudong on github
Kovalkov Dmitrii
kreshano on github
Kris Kennaway
1235
1236
1237
1238
1239
1240
1241

1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257

1258
1259
1260
1261
1262
1263
1264
Lars Johannesen
Lars Nilsson
Lars Torben Wilson
Laurent Bonnans
Laurent Rabret
Lauri Kasanen
Laurie Clark-Michalek

Lawrence Matthews
Lawrence Wagerfield
Legoff Vincent
Lehel Bernadt
Leif W
Leigh Purdie
Leith Bade
Len Krause
Len Marinaccio
Lenaic Lefever
Lenny Rachitsky
Leo Neat
Leon Breedt
Leon Winter
Leonardo Rosati
Leonardo Taccari

Liam Healy
lijian996 on github
Lijo Antony
lilongyan-huawei on github
Linas Vepstas
Lindley French
Ling Thio







>
















>







1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
Lars Johannesen
Lars Nilsson
Lars Torben Wilson
Laurent Bonnans
Laurent Rabret
Lauri Kasanen
Laurie Clark-Michalek
Lawrence Gripper
Lawrence Matthews
Lawrence Wagerfield
Legoff Vincent
Lehel Bernadt
Leif W
Leigh Purdie
Leith Bade
Len Krause
Len Marinaccio
Lenaic Lefever
Lenny Rachitsky
Leo Neat
Leon Breedt
Leon Winter
Leonardo Rosati
Leonardo Taccari
Li Xinwei
Liam Healy
lijian996 on github
Lijo Antony
lilongyan-huawei on github
Linas Vepstas
Lindley French
Ling Thio
1308
1309
1310
1311
1312
1313
1314

1315
1316
1317
1318
1319
1320
1321
Maksim Stsepanenka
Mamoru Tasaka
Mamta Upadhyay
Mandy Wu
Manfred Schwarb
MAntoniak on github
Manuel Massing

Marc Aldorasi
Marc Boucher
Marc Deslauriers
Marc Doughty
Marc Hesse
Marc Hörsken
Marc Kleine-Budde







>







1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
Maksim Stsepanenka
Mamoru Tasaka
Mamta Upadhyay
Mandy Wu
Manfred Schwarb
MAntoniak on github
Manuel Massing
Manuj Bhatia
Marc Aldorasi
Marc Boucher
Marc Deslauriers
Marc Doughty
Marc Hesse
Marc Hörsken
Marc Kleine-Budde
1437
1438
1439
1440
1441
1442
1443

1444
1445
1446
1447
1448
1449
1450
1451

1452
1453
1454
1455
1456
1457
1458
Melissa Mears
Mert Yazıcıoğlu
Mettgut Jamalla
Michael Anti
Michael Baentsch
Michael Benedict
Michael Brehm

Michael Calmer
Michael Cronenworth
Michael Curtis
Michael Day
Michael Felt
Michael Forney
Michael Gmelin
Michael Goffioul

Michael Jahn
Michael Jerris
Michael Kalinin
Michael Kaufmann
Michael Kilburn
Michael Kujawa
Michael König







>








>







1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
Melissa Mears
Mert Yazıcıoğlu
Mettgut Jamalla
Michael Anti
Michael Baentsch
Michael Benedict
Michael Brehm
Michael Brown
Michael Calmer
Michael Cronenworth
Michael Curtis
Michael Day
Michael Felt
Michael Forney
Michael Gmelin
Michael Goffioul
Michael Hordijk
Michael Jahn
Michael Jerris
Michael Kalinin
Michael Kaufmann
Michael Kilburn
Michael Kujawa
Michael König
1681
1682
1683
1684
1685
1686
1687

1688
1689
1690
1691
1692
1693
1694
Pawel A. Gajda
Pawel Kierski
Pedro Larroy
Pedro Monreal
Pedro Neves
pendrek at hackerone
Peng Li

Per Lundberg
Per Malmberg
Per Nilsson
Pete Lomax
Peter Bray
Peter Forret
Peter Frühberger







>







1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
Pawel A. Gajda
Pawel Kierski
Pedro Larroy
Pedro Monreal
Pedro Neves
pendrek at hackerone
Peng Li
Per Jensen
Per Lundberg
Per Malmberg
Per Nilsson
Pete Lomax
Peter Bray
Peter Forret
Peter Frühberger
1856
1857
1858
1859
1860
1861
1862

1863
1864
1865
1866
1867
1868
1869
Robert Dunaj
Robert Foreman
Robert Iakobashvili
Robert Kolcun
Robert Linden
Robert Olson
Robert Prag

Robert Schumann
Robert Weaver
Robert Wruck
Robin Cornelius
Robin Douine
Robin Johnson
Robin Kay







>







1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
Robert Dunaj
Robert Foreman
Robert Iakobashvili
Robert Kolcun
Robert Linden
Robert Olson
Robert Prag
Robert Ronto
Robert Schumann
Robert Weaver
Robert Wruck
Robin Cornelius
Robin Douine
Robin Johnson
Robin Kay
2235
2236
2237
2238
2239
2240
2241

2242
2243
2244
2245
2246
2247
2248
Vincent Torri
vitaha85 on github
Vlad Grachov
Vlad Ureche
Vladimir Grishchenko
Vladimir Kotal
Vladimir Lazarenko

Vlastimil Ovčáčík
Vojtech Janota
Vojtech Minarik
Vojtěch Král
Volker Schmid
Vsevolod Novikov
vshmuk on hackerone







>







2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
Vincent Torri
vitaha85 on github
Vlad Grachov
Vlad Ureche
Vladimir Grishchenko
Vladimir Kotal
Vladimir Lazarenko
Vladimir Varlamov
Vlastimil Ovčáčík
Vojtech Janota
Vojtech Minarik
Vojtěch Král
Volker Schmid
Vsevolod Novikov
vshmuk on hackerone
2311
2312
2313
2314
2315
2316
2317

2318
2319
2320
2321

2322
2323
2324
2325
2326

2327
2328
zelinchen on github
Zenju on github
Zero King
Zhao Yisha
Zhaoyang Wu
Zhibiao Wu
Zhouyihai Ding

zloi-user on github
Zmey Petroff
Zvi Har'El
zzq1015 on github

İsmail Dönmez
Łukasz Domeradzki
Štefan Kremeň
Коваленко Анатолий Викторович
Никита Дорохин

不确定
加藤郁之







>




>





>


2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
zelinchen on github
Zenju on github
Zero King
Zhao Yisha
Zhaoyang Wu
Zhibiao Wu
Zhouyihai Ding
ZimCodes on github
zloi-user on github
Zmey Petroff
Zvi Har'El
zzq1015 on github
Ádler Jonas Gross
İsmail Dönmez
Łukasz Domeradzki
Štefan Kremeň
Коваленко Анатолий Викторович
Никита Дорохин
ウさん
不确定
加藤郁之
Changes to jni/curl/docs/TODO.
31
32
33
34
35
36
37

38
39
40
41
42
43
44
 1.12 updated DNS server while running
 1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION
 1.14 Typesafe curl_easy_setopt()
 1.15 Monitor connections in the connection pool
 1.16 Try to URL encode given URL
 1.17 Add support for IRIs
 1.18 try next proxy if one doesn't work

 1.20 SRV and URI DNS records
 1.22 CURLINFO_PAUSE_STATE
 1.23 Offer API to flush the connection pool
 1.24 TCP Fast Open for windows
 1.25 Expose tried IP addresses that failed
 1.27 hardcode the "localhost" addresses
 1.28 FD_CLOEXEC







>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 1.12 updated DNS server while running
 1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION
 1.14 Typesafe curl_easy_setopt()
 1.15 Monitor connections in the connection pool
 1.16 Try to URL encode given URL
 1.17 Add support for IRIs
 1.18 try next proxy if one doesn't work
 1.19 provide timing info for each redirect
 1.20 SRV and URI DNS records
 1.22 CURLINFO_PAUSE_STATE
 1.23 Offer API to flush the connection pool
 1.24 TCP Fast Open for windows
 1.25 Expose tried IP addresses that failed
 1.27 hardcode the "localhost" addresses
 1.28 FD_CLOEXEC
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 13.5 Export session ids
 13.6 Provide callback for cert verification
 13.7 improve configure --with-ssl
 13.8 Support DANE
 13.9 TLS record padding
 13.10 Support Authority Information Access certificate extension (AIA)
 13.11 Support intermediate & root pinning for PINNEDPUBLICKEY
 13.12 Support HSTS
 13.13 Make sure we forbid TLS 1.3 post-handshake authentication
 13.14 Support the clienthello extension

 14. GnuTLS
 14.2 check connection

 15. Schannel







<







113
114
115
116
117
118
119

120
121
122
123
124
125
126
 13.5 Export session ids
 13.6 Provide callback for cert verification
 13.7 improve configure --with-ssl
 13.8 Support DANE
 13.9 TLS record padding
 13.10 Support Authority Information Access certificate extension (AIA)
 13.11 Support intermediate & root pinning for PINNEDPUBLICKEY

 13.13 Make sure we forbid TLS 1.3 post-handshake authentication
 13.14 Support the clienthello extension

 14. GnuTLS
 14.2 check connection

 15. Schannel
163
164
165
166
167
168
169

170
171
172
173
174
175
176
 18.19 expand ~/ in config files
 18.20 host name sections in config files
 18.21 retry on the redirected-to URL
 18.22 --fail-with-body
 18.23 Set the modification date on an uploaded file
 18.24 Use multiple parallel transfers for a single download
 18.25 Prevent terminal injection when writing to terminal


 19. Build
 19.1 roffit
 19.2 Enable PIE and RELRO by default
 19.3 Don't use GNU libtool on OpenBSD
 19.4 Package curl for Windows in a signed installer








>







163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
 18.19 expand ~/ in config files
 18.20 host name sections in config files
 18.21 retry on the redirected-to URL
 18.22 --fail-with-body
 18.23 Set the modification date on an uploaded file
 18.24 Use multiple parallel transfers for a single download
 18.25 Prevent terminal injection when writing to terminal
 18.26 Custom progress meter update interval

 19. Build
 19.1 roffit
 19.2 Enable PIE and RELRO by default
 19.3 Don't use GNU libtool on OpenBSD
 19.4 Package curl for Windows in a signed installer

346
347
348
349
350
351
352









353
354
355
356
357
358
359

 Allow an application to specify a list of proxies to try, and failing to
 connect to the first go on and try the next instead until the list is
 exhausted. Browsers support this feature at least when they specify proxies
 using PACs.

 https://github.com/curl/curl/issues/896










1.20 SRV and URI DNS records

 Offer support for resolving SRV and URI DNS records for libcurl to know which
 server to connect to for various protocols (including HTTP!).

1.22 CURLINFO_PAUSE_STATE







>
>
>
>
>
>
>
>
>







347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369

 Allow an application to specify a list of proxies to try, and failing to
 connect to the first go on and try the next instead until the list is
 exhausted. Browsers support this feature at least when they specify proxies
 using PACs.

 https://github.com/curl/curl/issues/896

1.19 provide timing info for each redirect

 curl and libcurl provide timing information via a set of different
 time-stamps (CURLINFO_*_TIME). When curl is following redirects, those
 returned time value are the accumulated sums. An improvement could be to
 offer separate timings for each redirect.

 https://github.com/curl/curl/issues/6743

1.20 SRV and URI DNS records

 Offer support for resolving SRV and URI DNS records for libcurl to know which
 server to connect to for various protocols (including HTTP!).

1.22 CURLINFO_PAUSE_STATE
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
 with "HTTP Public Key Pinning" as there also intermediate and root
 certificates can be pinned. This is very useful as it prevents webadmins from
 "locking themselves out of their servers".

 Adding this feature would make curls pinning 100% compatible to HPKP and
 allow more flexible pinning.

13.12 Support HSTS

 "HTTP Strict Transport Security" is TOFU (trust on first use), time-based
 features indicated by a HTTP header send by the webserver. It is widely used
 in browsers and it's purpose is to prevent insecure HTTP connections after a
 previous HTTPS connection. It protects against SSLStripping attacks.

 Doc: https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security
 RFC 6797: https://tools.ietf.org/html/rfc6797

13.13 Make sure we forbid TLS 1.3 post-handshake authentication

 RFC 8740 explains how using HTTP/2 must forbid the use of TLS 1.3
 post-handshake authentication. We should make sure to live up to that.

 See https://github.com/curl/curl/issues/5396








<
<
<
<
<
<
<
<
<
<







816
817
818
819
820
821
822










823
824
825
826
827
828
829
 with "HTTP Public Key Pinning" as there also intermediate and root
 certificates can be pinned. This is very useful as it prevents webadmins from
 "locking themselves out of their servers".

 Adding this feature would make curls pinning 100% compatible to HPKP and
 allow more flexible pinning.











13.13 Make sure we forbid TLS 1.3 post-handshake authentication

 RFC 8740 explains how using HTTP/2 must forbid the use of TLS 1.3
 post-handshake authentication. We should make sure to live up to that.

 See https://github.com/curl/curl/issues/5396

1187
1188
1189
1190
1191
1192
1193






1194
1195
1196
1197
1198
1199
1200

 curl could offer an option to make escape sequence either non-functional or
 avoid cursor moves or similar to reduce the risk of a user getting tricked by
 clever tricks.

 See https://github.com/curl/curl/issues/6150








19. Build

19.1 roffit

 Consider extending 'roffit' to produce decent ASCII output, and use that
 instead of (g)nroff when building src/tool_hugehelp.c







>
>
>
>
>
>







1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206

 curl could offer an option to make escape sequence either non-functional or
 avoid cursor moves or similar to reduce the risk of a user getting tricked by
 clever tricks.

 See https://github.com/curl/curl/issues/6150

18.26 Custom progress meter update interval

 Users who are for example doing large downloads in CI or remote setups might
 want the occasional progress meter update to see that the transfer is
 progressing and hasn't stuck, but they may not appreciate the
 many-times-a-second frequency curl can end up doing it with now.

19. Build

19.1 roffit

 Consider extending 'roffit' to produce decent ASCII output, and use that
 instead of (g)nroff when building src/tool_hugehelp.c
Changes to jni/curl/docs/cmdline-opts/MANPAGE.md.
1
2
3
4
5
6

7
8
9
10
11
12
13
# curl man page generator

This is the curl man page generator. It generates a single nroff man page
output from the set of sources files in this directory.

There is one source file for each supported command line option. The format is

described below.

## Option files

Each command line option is described in a file named `<long name>.d`, where
option name is written without any prefixing dashes. Like the file name for
the -v, --verbose option is named `verbose.d`.





|
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
# curl man page generator

This is the curl man page generator. It generates a single nroff man page
output from the set of sources files in this directory.

There is one source file for each supported command line option. The output
gets `page-header` prepended and `page-footer` appended. The format is
described below.

## Option files

Each command line option is described in a file named `<long name>.d`, where
option name is written without any prefixing dashes. Like the file name for
the -v, --verbose option is named `verbose.d`.
28
29
30
31
32
33
34
35
36
37



38
39
40
41


42
43
44
45
46
47
48
49
50
51
52
    See-also: (space separated list of related options, no dashes)
    Help: (short text for the --help output for this option)
    --- (end of meta-data)

### Body

The body of the description. Only refer to options with their long form option
version, like --verbose. The output generator will replace such with the
correct markup that shows both short and long version.




## Header

`page-header` is the nroff formatted file that will be output before the
generated options output for the master man page.



## Generate

`./gen.pl mainpage`

This command outputs a single huge nroff file, meant to become `curl.1`. The
full curl man page.

`./gen.pl listhelp`

Generates a full `curl --help` output for all known command line options.







|


>
>
>
|

|
|
>
>











29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    See-also: (space separated list of related options, no dashes)
    Help: (short text for the --help output for this option)
    --- (end of meta-data)

### Body

The body of the description. Only refer to options with their long form option
version, like `--verbose`. The output generator will replace such with the
correct markup that shows both short and long version.

Text written within `*asterisks*` will get shown using italics. Text within
two `**asterisks**` will get shown using bold.

## Header and footer

`page-header` is the file that will be output before the generated options
output for the master man page.

`page-footer` is appended after all the individual options.

## Generate

`./gen.pl mainpage`

This command outputs a single huge nroff file, meant to become `curl.1`. The
full curl man page.

`./gen.pl listhelp`

Generates a full `curl --help` output for all known command line options.
Changes to jni/curl/docs/cmdline-opts/Makefile.in.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330

331
332
333



334
335
336
337
338
339
340
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







309
310
311
312
313
314
315

316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
392
393
394
395
396
397
398
399
400
401
402


403

404
405
406
407
408
409
410
411
412
413
414
415
416
417
418

419
420
421

422
423
424
425
426
427
428
429
430
431
432
433


434
435
436
437
438
439
440
441

442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457

458
459
460

461
462
463
464
465
466
467

468
469
470
471
472
473

474
475

476
477

478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497

498
499
500
501
502
503

504
505
506
507

508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550

551
552

553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577

578
579
580
581
582
583
584
585

586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603

604
605
606
607
608
609
610

611
612
613
614
615
616
617
618
619
620
621
622
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
MANPAGE = $(top_builddir)/docs/curl.1
DPAGES = \
  abstract-unix-socket.d			\
  alt-svc.d                                     \
  anyauth.d					\
  append.d basic.d				\


  cacert.d capath.d				\

  cert-status.d					\
  cert-type.d					\
  cert.d					\
  ciphers.d					\
  compressed-ssh.d				\
  compressed.d					\
  config.d					\
  connect-timeout.d				\
  connect-to.d					\
  continue-at.d					\
  cookie-jar.d					\
  cookie.d					\
  create-dirs.d					\
  create-file-mode.d                            \
  crlf.d crlfile.d				\

  curves.d					\
  data-ascii.d					\
  data-binary.d					\

  data-urlencode.d				\
  data.d data-raw.d				\
  delegation.d					\
  digest.d					\
  disable-eprt.d				\
  disable-epsv.d				\
  disable.d					\
  disallow-username-in-url.d			\
  dns-interface.d				\
  dns-ipv4-addr.d				\
  dns-ipv6-addr.d				\
  dns-servers.d					\


  doh-url.d					\
  dump-header.d					\
  egd-file.d					\
  engine.d					\
  etag-compare.d                \
  etag-save.d                   \
  expect100-timeout.d				\
  fail-early.d					\

  fail.d					\
  false-start.d					\
  form-string.d					\
  form.d					\
  ftp-account.d					\
  ftp-alternative-to-user.d			\
  ftp-create-dirs.d				\
  ftp-method.d					\
  ftp-pasv.d					\
  ftp-port.d					\
  ftp-pret.d					\
  ftp-skip-pasv-ip.d				\
  ftp-ssl-ccc-mode.d				\
  ftp-ssl-ccc.d					\
  ftp-ssl-control.d				\
  get.d globoff.d				\

  happy-eyeballs-timeout-ms.d			\
  haproxy-protocol.d				\
  head.d header.d				\

  help.d					\
  hostpubmd5.d					\
  hsts.d                                        \
  http0.9.d					\
  http1.0.d					\
  http1.1.d http2.d				\
  http2-prior-knowledge.d			\

  http3.d                                       \
  ignore-content-length.d			\
  include.d					\
  insecure.d					\
  interface.d					\
  ipv4.d ipv6.d					\

  junk-session-cookies.d			\
  keepalive-time.d				\

  key.d key-type.d				\
  krb.d libcurl.d				\

  limit-rate.d					\
  list-only.d					\
  local-port.d					\
  location-trusted.d				\
  location.d					\
  login-options.d				\
  mail-auth.d					\
  mail-from.d					\
  mail-rcpt-allowfails.d                        \
  mail-rcpt.d					\
  manual.d					\
  max-filesize.d				\
  max-redirs.d					\
  max-time.d					\
  metalink.d					\
  negotiate.d					\
  netrc-file.d					\
  netrc-optional.d				\
  netrc.d					\
  next.d no-alpn.d				\

  no-buffer.d					\
  no-keepalive.d				\
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\

  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \
  output-dir.d                                  \

  parallel-immediate.d                          \
  parallel-max.d                                \
  parallel.d                                    \
  pass.d                			\
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
  progress-bar.d				\
  proto-default.d				\
  proto-redir.d					\
  proto.d					\
  proxy-anyauth.d				\
  proxy-basic.d					\
  proxy-cacert.d				\
  proxy-capath.d				\
  proxy-cert-type.d				\
  proxy-cert.d					\
  proxy-ciphers.d				\
  proxy-crlfile.d				\
  proxy-digest.d				\
  proxy-header.d				\
  proxy-insecure.d				\
  proxy-key-type.d				\
  proxy-key.d					\
  proxy-negotiate.d				\
  proxy-ntlm.d					\
  proxy-pass.d					\
  proxy-pinnedpubkey.d				\
  proxy-service-name.d				\
  proxy-ssl-allow-beast.d			\
  proxy-tls13-ciphers.d				\
  proxy-tlsauthtype.d				\
  proxy-tlspassword.d				\
  proxy-tlsuser.d				\
  proxy-tlsv1.d					\
  proxy-user.d					\
  proxy.d					\
  proxy1.0.d					\
  proxytunnel.d					\
  pubkey.d quote.d				\

  random-file.d					\
  range.d raw.d					\

  referer.d					\
  remote-header-name.d				\
  remote-name-all.d				\
  remote-name.d					\
  remote-time.d					\
  request-target.d				\
  request.d					\
  resolve.d					\
  retry-all-errors.d				\
  retry-connrefused.d				\
  retry-delay.d					\
  retry-max-time.d				\
  retry.d					\
  sasl-authzid.d				\
  sasl-ir.d					\
  service-name.d				\
  show-error.d					\
  silent.d					\
  socks4.d socks5.d				\
  socks4a.d					\
  socks5-basic.d				\
  socks5-gssapi-nec.d				\
  socks5-gssapi-service.d			\
  socks5-gssapi.d				\
  socks5-hostname.d				\

  speed-limit.d					\
  speed-time.d					\
  ssl-allow-beast.d				\
  ssl-no-revoke.d				\
  ssl-reqd.d					\
  ssl-revoke-best-effort.d			\
  ssl.d						\
  sslv2.d sslv3.d				\

  stderr.d					\
  styled-output.d				\
  suppress-connect-headers.d			\
  tcp-fastopen.d				\
  tcp-nodelay.d					\
  telnet-option.d				\
  tftp-blksize.d				\
  tftp-no-options.d				\
  time-cond.d					\
  tls-max.d					\
  tls13-ciphers.d				\
  tlsauthtype.d					\
  tlspassword.d					\
  tlsuser.d					\
  tlsv1.0.d					\
  tlsv1.1.d					\
  tlsv1.2.d					\
  tlsv1.3.d tlsv1.d				\

  tr-encoding.d					\
  trace-ascii.d					\
  trace-time.d					\
  trace.d					\
  unix-socket.d					\
  upload-file.d					\
  url.d use-ascii.d				\

  user-agent.d					\
  user.d verbose.d				\
  aws-sigv4.d                                   \
  version.d					\
  write-out.d					\
  xattr.d

OTHERPAGES = page-footer page-header
EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt
all: all-am

.SUFFIXES:







|
|
|
|
>
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
>
|
|
|
|
|
|
|
>
|
|
|
|
|
|
>
|
|
>
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
>
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
>
|
|
|
|
|







395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524

525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
MANPAGE = $(top_builddir)/docs/curl.1
DPAGES = \
  abstract-unix-socket.d \
  alt-svc.d \
  anyauth.d \
  append.d \
  aws-sigv4.d \
  basic.d \
  cacert.d \
  capath.d \
  cert-status.d \
  cert-type.d \
  cert.d \
  ciphers.d \
  compressed-ssh.d \
  compressed.d \
  config.d \
  connect-timeout.d \
  connect-to.d \
  continue-at.d \
  cookie-jar.d \
  cookie.d \
  create-dirs.d \
  create-file-mode.d \
  crlf.d \
  crlfile.d \
  curves.d \
  data-ascii.d \
  data-binary.d \
  data-raw.d \
  data-urlencode.d \
  data.d \
  delegation.d \
  digest.d \
  disable-eprt.d \
  disable-epsv.d \
  disable.d \
  disallow-username-in-url.d \
  dns-interface.d \
  dns-ipv4-addr.d \
  dns-ipv6-addr.d \
  dns-servers.d \
  doh-cert-status.d \
  doh-insecure.d \
  doh-url.d \
  dump-header.d \
  egd-file.d \
  engine.d \
  etag-compare.d \
  etag-save.d \
  expect100-timeout.d \
  fail-early.d \
  fail-with-body.d \
  fail.d \
  false-start.d \
  form-string.d \
  form.d \
  ftp-account.d \
  ftp-alternative-to-user.d \
  ftp-create-dirs.d \
  ftp-method.d \
  ftp-pasv.d \
  ftp-port.d \
  ftp-pret.d \
  ftp-skip-pasv-ip.d \
  ftp-ssl-ccc-mode.d \
  ftp-ssl-ccc.d \
  ftp-ssl-control.d \
  get.d \
  globoff.d \
  happy-eyeballs-timeout-ms.d \
  haproxy-protocol.d \
  head.d \
  header.d \
  help.d \
  hostpubmd5.d \
  hsts.d \
  http0.9.d \
  http1.0.d \
  http1.1.d \
  http2-prior-knowledge.d \
  http2.d \
  http3.d \
  ignore-content-length.d \
  include.d \
  insecure.d \
  interface.d \
  ipv4.d \
  ipv6.d \
  junk-session-cookies.d \
  keepalive-time.d \
  key-type.d \
  key.d \
  krb.d \
  libcurl.d \
  limit-rate.d \
  list-only.d \
  local-port.d \
  location-trusted.d \
  location.d \
  login-options.d \
  mail-auth.d \
  mail-from.d \
  mail-rcpt-allowfails.d \
  mail-rcpt.d \
  manual.d \
  max-filesize.d \
  max-redirs.d \
  max-time.d \
  metalink.d \
  negotiate.d \
  netrc-file.d \
  netrc-optional.d \
  netrc.d \
  next.d \
  no-alpn.d \
  no-buffer.d \
  no-keepalive.d \
  no-npn.d \
  no-progress-meter.d \
  no-sessionid.d \
  noproxy.d \
  ntlm-wb.d \
  ntlm.d \
  oauth2-bearer.d \

  output-dir.d \
  output.d \
  parallel-immediate.d \
  parallel-max.d \
  parallel.d \
  pass.d \
  path-as-is.d \
  pinnedpubkey.d \
  post301.d \
  post302.d \
  post303.d \
  preproxy.d \
  progress-bar.d \
  proto-default.d \
  proto-redir.d \
  proto.d \
  proxy-anyauth.d \
  proxy-basic.d \
  proxy-cacert.d \
  proxy-capath.d \
  proxy-cert-type.d \
  proxy-cert.d \
  proxy-ciphers.d \
  proxy-crlfile.d \
  proxy-digest.d \
  proxy-header.d \
  proxy-insecure.d \
  proxy-key-type.d \
  proxy-key.d \
  proxy-negotiate.d \
  proxy-ntlm.d \
  proxy-pass.d \
  proxy-pinnedpubkey.d \
  proxy-service-name.d \
  proxy-ssl-allow-beast.d \
  proxy-tls13-ciphers.d \
  proxy-tlsauthtype.d \
  proxy-tlspassword.d \
  proxy-tlsuser.d \
  proxy-tlsv1.d \
  proxy-user.d \
  proxy.d \
  proxy1.0.d \
  proxytunnel.d \
  pubkey.d \
  quote.d \
  random-file.d \
  range.d \
  raw.d \
  referer.d \
  remote-header-name.d \
  remote-name-all.d \
  remote-name.d \
  remote-time.d \
  request-target.d \
  request.d \
  resolve.d \
  retry-all-errors.d \
  retry-connrefused.d \
  retry-delay.d \
  retry-max-time.d \
  retry.d \
  sasl-authzid.d \
  sasl-ir.d \
  service-name.d \
  show-error.d \
  silent.d \
  socks4.d \
  socks4a.d \
  socks5-basic.d \
  socks5-gssapi-nec.d \
  socks5-gssapi-service.d \
  socks5-gssapi.d \
  socks5-hostname.d \
  socks5.d \
  speed-limit.d \
  speed-time.d \
  ssl-allow-beast.d \
  ssl-no-revoke.d \
  ssl-reqd.d \
  ssl-revoke-best-effort.d \
  ssl.d \
  sslv2.d \
  sslv3.d \
  stderr.d \
  styled-output.d \
  suppress-connect-headers.d \
  tcp-fastopen.d \
  tcp-nodelay.d \
  telnet-option.d \
  tftp-blksize.d \
  tftp-no-options.d \
  time-cond.d \
  tls-max.d \
  tls13-ciphers.d \
  tlsauthtype.d \
  tlspassword.d \
  tlsuser.d \
  tlsv1.0.d \
  tlsv1.1.d \
  tlsv1.2.d \
  tlsv1.3.d \
  tlsv1.d \
  tr-encoding.d \
  trace-ascii.d \
  trace-time.d \
  trace.d \
  unix-socket.d \
  upload-file.d \
  url.d \
  use-ascii.d \
  user-agent.d \
  user.d \
  verbose.d \
  version.d \
  write-out.d \
  xattr.d

OTHERPAGES = page-footer page-header
EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt
all: all-am

.SUFFIXES:
Changes to jni/curl/docs/cmdline-opts/Makefile.inc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28


29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

45
46
47

48
49
50
51
52
53
54
55
56
57
58
59


60
61
62
63
64
65
66
67

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

84
85
86

87
88
89
90
91
92
93

94
95
96
97
98
99

100
101

102
103

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123

124
125
126
127
128
129

130
131
132
133

134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176

177
178

179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203

204
205
206
207
208
209
210
211

212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229

230
231
232
233
234
235
236

237
238
239
240
241
242
243
244
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt

DPAGES =					\
  abstract-unix-socket.d			\
  alt-svc.d                                     \
  anyauth.d					\
  append.d basic.d				\


  cacert.d capath.d				\

  cert-status.d					\
  cert-type.d					\
  cert.d					\
  ciphers.d					\
  compressed-ssh.d				\
  compressed.d					\
  config.d					\
  connect-timeout.d				\
  connect-to.d					\
  continue-at.d					\
  cookie-jar.d					\
  cookie.d					\
  create-dirs.d					\
  create-file-mode.d                            \
  crlf.d crlfile.d				\

  curves.d					\
  data-ascii.d					\
  data-binary.d					\

  data-urlencode.d				\
  data.d data-raw.d				\
  delegation.d					\
  digest.d					\
  disable-eprt.d				\
  disable-epsv.d				\
  disable.d					\
  disallow-username-in-url.d			\
  dns-interface.d				\
  dns-ipv4-addr.d				\
  dns-ipv6-addr.d				\
  dns-servers.d					\


  doh-url.d					\
  dump-header.d					\
  egd-file.d					\
  engine.d					\
  etag-compare.d                \
  etag-save.d                   \
  expect100-timeout.d				\
  fail-early.d					\

  fail.d					\
  false-start.d					\
  form-string.d					\
  form.d					\
  ftp-account.d					\
  ftp-alternative-to-user.d			\
  ftp-create-dirs.d				\
  ftp-method.d					\
  ftp-pasv.d					\
  ftp-port.d					\
  ftp-pret.d					\
  ftp-skip-pasv-ip.d				\
  ftp-ssl-ccc-mode.d				\
  ftp-ssl-ccc.d					\
  ftp-ssl-control.d				\
  get.d globoff.d				\

  happy-eyeballs-timeout-ms.d			\
  haproxy-protocol.d				\
  head.d header.d				\

  help.d					\
  hostpubmd5.d					\
  hsts.d                                        \
  http0.9.d					\
  http1.0.d					\
  http1.1.d http2.d				\
  http2-prior-knowledge.d			\

  http3.d                                       \
  ignore-content-length.d			\
  include.d					\
  insecure.d					\
  interface.d					\
  ipv4.d ipv6.d					\

  junk-session-cookies.d			\
  keepalive-time.d				\

  key.d key-type.d				\
  krb.d libcurl.d				\

  limit-rate.d					\
  list-only.d					\
  local-port.d					\
  location-trusted.d				\
  location.d					\
  login-options.d				\
  mail-auth.d					\
  mail-from.d					\
  mail-rcpt-allowfails.d                        \
  mail-rcpt.d					\
  manual.d					\
  max-filesize.d				\
  max-redirs.d					\
  max-time.d					\
  metalink.d					\
  negotiate.d					\
  netrc-file.d					\
  netrc-optional.d				\
  netrc.d					\
  next.d no-alpn.d				\

  no-buffer.d					\
  no-keepalive.d				\
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\

  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \
  output-dir.d                                  \

  parallel-immediate.d                          \
  parallel-max.d                                \
  parallel.d                                    \
  pass.d                			\
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
  progress-bar.d				\
  proto-default.d				\
  proto-redir.d					\
  proto.d					\
  proxy-anyauth.d				\
  proxy-basic.d					\
  proxy-cacert.d				\
  proxy-capath.d				\
  proxy-cert-type.d				\
  proxy-cert.d					\
  proxy-ciphers.d				\
  proxy-crlfile.d				\
  proxy-digest.d				\
  proxy-header.d				\
  proxy-insecure.d				\
  proxy-key-type.d				\
  proxy-key.d					\
  proxy-negotiate.d				\
  proxy-ntlm.d					\
  proxy-pass.d					\
  proxy-pinnedpubkey.d				\
  proxy-service-name.d				\
  proxy-ssl-allow-beast.d			\
  proxy-tls13-ciphers.d				\
  proxy-tlsauthtype.d				\
  proxy-tlspassword.d				\
  proxy-tlsuser.d				\
  proxy-tlsv1.d					\
  proxy-user.d					\
  proxy.d					\
  proxy1.0.d					\
  proxytunnel.d					\
  pubkey.d quote.d				\

  random-file.d					\
  range.d raw.d					\

  referer.d					\
  remote-header-name.d				\
  remote-name-all.d				\
  remote-name.d					\
  remote-time.d					\
  request-target.d				\
  request.d					\
  resolve.d					\
  retry-all-errors.d				\
  retry-connrefused.d				\
  retry-delay.d					\
  retry-max-time.d				\
  retry.d					\
  sasl-authzid.d				\
  sasl-ir.d					\
  service-name.d				\
  show-error.d					\
  silent.d					\
  socks4.d socks5.d				\
  socks4a.d					\
  socks5-basic.d				\
  socks5-gssapi-nec.d				\
  socks5-gssapi-service.d			\
  socks5-gssapi.d				\
  socks5-hostname.d				\

  speed-limit.d					\
  speed-time.d					\
  ssl-allow-beast.d				\
  ssl-no-revoke.d				\
  ssl-reqd.d					\
  ssl-revoke-best-effort.d			\
  ssl.d						\
  sslv2.d sslv3.d				\

  stderr.d					\
  styled-output.d				\
  suppress-connect-headers.d			\
  tcp-fastopen.d				\
  tcp-nodelay.d					\
  telnet-option.d				\
  tftp-blksize.d				\
  tftp-no-options.d				\
  time-cond.d					\
  tls-max.d					\
  tls13-ciphers.d				\
  tlsauthtype.d					\
  tlspassword.d					\
  tlsuser.d					\
  tlsv1.0.d					\
  tlsv1.1.d					\
  tlsv1.2.d					\
  tlsv1.3.d tlsv1.d				\

  tr-encoding.d					\
  trace-ascii.d					\
  trace-time.d					\
  trace.d					\
  unix-socket.d					\
  upload-file.d					\
  url.d use-ascii.d				\

  user-agent.d					\
  user.d verbose.d				\
  aws-sigv4.d                                   \
  version.d					\
  write-out.d					\
  xattr.d

OTHERPAGES = page-footer page-header







|















|
|
|
|
|
>
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
>
|
|
|
|
|
|
|
>
|
|
|
|
|
|
>
|
|
>
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
>
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
>
|
|
|
|
|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt

DPAGES = \
  abstract-unix-socket.d \
  alt-svc.d \
  anyauth.d \
  append.d \
  aws-sigv4.d \
  basic.d \
  cacert.d \
  capath.d \
  cert-status.d \
  cert-type.d \
  cert.d \
  ciphers.d \
  compressed-ssh.d \
  compressed.d \
  config.d \
  connect-timeout.d \
  connect-to.d \
  continue-at.d \
  cookie-jar.d \
  cookie.d \
  create-dirs.d \
  create-file-mode.d \
  crlf.d \
  crlfile.d \
  curves.d \
  data-ascii.d \
  data-binary.d \
  data-raw.d \
  data-urlencode.d \
  data.d \
  delegation.d \
  digest.d \
  disable-eprt.d \
  disable-epsv.d \
  disable.d \
  disallow-username-in-url.d \
  dns-interface.d \
  dns-ipv4-addr.d \
  dns-ipv6-addr.d \
  dns-servers.d \
  doh-cert-status.d \
  doh-insecure.d \
  doh-url.d \
  dump-header.d \
  egd-file.d \
  engine.d \
  etag-compare.d \
  etag-save.d \
  expect100-timeout.d \
  fail-early.d \
  fail-with-body.d \
  fail.d \
  false-start.d \
  form-string.d \
  form.d \
  ftp-account.d \
  ftp-alternative-to-user.d \
  ftp-create-dirs.d \
  ftp-method.d \
  ftp-pasv.d \
  ftp-port.d \
  ftp-pret.d \
  ftp-skip-pasv-ip.d \
  ftp-ssl-ccc-mode.d \
  ftp-ssl-ccc.d \
  ftp-ssl-control.d \
  get.d \
  globoff.d \
  happy-eyeballs-timeout-ms.d \
  haproxy-protocol.d \
  head.d \
  header.d \
  help.d \
  hostpubmd5.d \
  hsts.d \
  http0.9.d \
  http1.0.d \
  http1.1.d \
  http2-prior-knowledge.d \
  http2.d \
  http3.d \
  ignore-content-length.d \
  include.d \
  insecure.d \
  interface.d \
  ipv4.d \
  ipv6.d \
  junk-session-cookies.d \
  keepalive-time.d \
  key-type.d \
  key.d \
  krb.d \
  libcurl.d \
  limit-rate.d \
  list-only.d \
  local-port.d \
  location-trusted.d \
  location.d \
  login-options.d \
  mail-auth.d \
  mail-from.d \
  mail-rcpt-allowfails.d \
  mail-rcpt.d \
  manual.d \
  max-filesize.d \
  max-redirs.d \
  max-time.d \
  metalink.d \
  negotiate.d \
  netrc-file.d \
  netrc-optional.d \
  netrc.d \
  next.d \
  no-alpn.d \
  no-buffer.d \
  no-keepalive.d \
  no-npn.d \
  no-progress-meter.d \
  no-sessionid.d \
  noproxy.d \
  ntlm-wb.d \
  ntlm.d \
  oauth2-bearer.d \

  output-dir.d \
  output.d \
  parallel-immediate.d \
  parallel-max.d \
  parallel.d \
  pass.d \
  path-as-is.d \
  pinnedpubkey.d \
  post301.d \
  post302.d \
  post303.d \
  preproxy.d \
  progress-bar.d \
  proto-default.d \
  proto-redir.d \
  proto.d \
  proxy-anyauth.d \
  proxy-basic.d \
  proxy-cacert.d \
  proxy-capath.d \
  proxy-cert-type.d \
  proxy-cert.d \
  proxy-ciphers.d \
  proxy-crlfile.d \
  proxy-digest.d \
  proxy-header.d \
  proxy-insecure.d \
  proxy-key-type.d \
  proxy-key.d \
  proxy-negotiate.d \
  proxy-ntlm.d \
  proxy-pass.d \
  proxy-pinnedpubkey.d \
  proxy-service-name.d \
  proxy-ssl-allow-beast.d \
  proxy-tls13-ciphers.d \
  proxy-tlsauthtype.d \
  proxy-tlspassword.d \
  proxy-tlsuser.d \
  proxy-tlsv1.d \
  proxy-user.d \
  proxy.d \
  proxy1.0.d \
  proxytunnel.d \
  pubkey.d \
  quote.d \
  random-file.d \
  range.d \
  raw.d \
  referer.d \
  remote-header-name.d \
  remote-name-all.d \
  remote-name.d \
  remote-time.d \
  request-target.d \
  request.d \
  resolve.d \
  retry-all-errors.d \
  retry-connrefused.d \
  retry-delay.d \
  retry-max-time.d \
  retry.d \
  sasl-authzid.d \
  sasl-ir.d \
  service-name.d \
  show-error.d \
  silent.d \
  socks4.d \
  socks4a.d \
  socks5-basic.d \
  socks5-gssapi-nec.d \
  socks5-gssapi-service.d \
  socks5-gssapi.d \
  socks5-hostname.d \
  socks5.d \
  speed-limit.d \
  speed-time.d \
  ssl-allow-beast.d \
  ssl-no-revoke.d \
  ssl-reqd.d \
  ssl-revoke-best-effort.d \
  ssl.d \
  sslv2.d \
  sslv3.d \
  stderr.d \
  styled-output.d \
  suppress-connect-headers.d \
  tcp-fastopen.d \
  tcp-nodelay.d \
  telnet-option.d \
  tftp-blksize.d \
  tftp-no-options.d \
  time-cond.d \
  tls-max.d \
  tls13-ciphers.d \
  tlsauthtype.d \
  tlspassword.d \
  tlsuser.d \
  tlsv1.0.d \
  tlsv1.1.d \
  tlsv1.2.d \
  tlsv1.3.d \
  tlsv1.d \
  tr-encoding.d \
  trace-ascii.d \
  trace-time.d \
  trace.d \
  unix-socket.d \
  upload-file.d \
  url.d \
  use-ascii.d \
  user-agent.d \
  user.d \
  verbose.d \
  version.d \
  write-out.d \
  xattr.d

OTHERPAGES = page-footer page-header
Changes to jni/curl/docs/cmdline-opts/cert-status.d.
1
2
3
4
5
6
7
8
9
10
11
Long: cert-status
Protocols: TLS
Added: 7.41.0
Help: Verify the status of the server certificate
Category: tls
---
Tells curl to verify the status of the server certificate by using the
Certificate Status Request (aka. OCSP stapling) TLS extension.

If this option is enabled and the server sends an invalid (e.g. expired)
response, if the response suggests that the server certificate has been revoked,



|







1
2
3
4
5
6
7
8
9
10
11
Long: cert-status
Protocols: TLS
Added: 7.41.0
Help: Verify the status of the server cert via OCSP-staple
Category: tls
---
Tells curl to verify the status of the server certificate by using the
Certificate Status Request (aka. OCSP stapling) TLS extension.

If this option is enabled and the server sends an invalid (e.g. expired)
response, if the response suggests that the server certificate has been revoked,
Changes to jni/curl/docs/cmdline-opts/cookie.d.
27
28
29
30
31
32
33
34
35
36
37
38
format and don't specify a domain, then the cookie is sent for any domain
(even after redirects are followed) and cannot be modified by a server-set
cookie. If the cookie engine is enabled and a server sets a cookie of the same
name then both will be sent on a future transfer to that server, likely not
what you intended.  To address these issues set a domain in Set-Cookie (doing
that will include sub domains) or use the Netscape format.

If this option is used several times, the last one will be used.

Users very often want to both read cookies from a file and write updated
cookies back to a file, so using both --cookie and --cookie-jar in the same
command line is common.







|




27
28
29
30
31
32
33
34
35
36
37
38
format and don't specify a domain, then the cookie is sent for any domain
(even after redirects are followed) and cannot be modified by a server-set
cookie. If the cookie engine is enabled and a server sets a cookie of the same
name then both will be sent on a future transfer to that server, likely not
what you intended.  To address these issues set a domain in Set-Cookie (doing
that will include sub domains) or use the Netscape format.

This option can be used multiple times.

Users very often want to both read cookies from a file and write updated
cookies back to a file, so using both --cookie and --cookie-jar in the same
command line is common.
Changes to jni/curl/docs/cmdline-opts/create-file-mode.d.
1

2
3
4
5
6
7
8
9
10
11
12
Long: create-file-mode

Help: File mode for created files
Protocols: SFTP SCP FILE
Category: sftp scp file upload
See-also: ftp-create-dirs
Added: 7.75.0
---
When curl is used to create files remotely using one of the supported
protocols, this option allows the user to set which 'mode' to set on the file
at creation time, instead of the default 0644.

This options takes an octal number as argument.

>










|
1
2
3
4
5
6
7
8
9
10
11
12
13
Long: create-file-mode
Arg: <mode>
Help: File mode for created files
Protocols: SFTP SCP FILE
Category: sftp scp file upload
See-also: ftp-create-dirs
Added: 7.75.0
---
When curl is used to create files remotely using one of the supported
protocols, this option allows the user to set which 'mode' to set on the file
at creation time, instead of the default 0644.

This option takes an octal number as argument.
Changes to jni/curl/docs/cmdline-opts/data-urlencode.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Long: data-urlencode
Arg: <data>
Help: HTTP POST data url encoded
Protocols: HTTP
See-also: data data-raw
Added: 7.18.0
Category: http post upload
---
This posts data, similar to the other --data options with the exception
that this performs URL-encoding.

To be CGI-compliant, the <data> part should begin with a \fIname\fP followed
by a separator and a content specification. The <data> part can be passed to
curl using one of the following syntaxes:
.RS
.IP "content"
This will make curl URL-encode the content and pass that on. Just be careful
so that the content doesn't contain any = or @ symbols, as that will then make
the syntax match one of the other cases below!
.IP "=content"
This will make curl URL-encode the content and pass that on. The preceding =
symbol is not included in the data.
.IP "name=content"
This will make curl URL-encode the content part and pass that on. Note that
the name part is expected to be URL-encoded already.
.IP "@filename"
This will make curl load data from the given file (including any newlines),
URL-encode that data and pass it on in the POST.
.IP "name@filename"
This will make curl load data from the given file (including any newlines),
URL-encode that data and pass it on in the POST. The name part gets an equal
sign appended, resulting in \fIname=urlencoded-file-content\fP. Note that the
name is expected to be URL-encoded already.
.RE











|



















|


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Long: data-urlencode
Arg: <data>
Help: HTTP POST data url encoded
Protocols: HTTP
See-also: data data-raw
Added: 7.18.0
Category: http post upload
---
This posts data, similar to the other --data options with the exception
that this performs URL-encoding.

To be CGI-compliant, the <data> part should begin with a *name* followed
by a separator and a content specification. The <data> part can be passed to
curl using one of the following syntaxes:
.RS
.IP "content"
This will make curl URL-encode the content and pass that on. Just be careful
so that the content doesn't contain any = or @ symbols, as that will then make
the syntax match one of the other cases below!
.IP "=content"
This will make curl URL-encode the content and pass that on. The preceding =
symbol is not included in the data.
.IP "name=content"
This will make curl URL-encode the content part and pass that on. Note that
the name part is expected to be URL-encoded already.
.IP "@filename"
This will make curl load data from the given file (including any newlines),
URL-encode that data and pass it on in the POST.
.IP "name@filename"
This will make curl load data from the given file (including any newlines),
URL-encode that data and pass it on in the POST. The name part gets an equal
sign appended, resulting in *name=urlencoded-file-content*. Note that the
name is expected to be URL-encoded already.
.RE
Changes to jni/curl/docs/cmdline-opts/disable.d.
1
2
3
4
5
6
7
8
Long: disable
Short: q
Help: Disable .curlrc
Category: curl
---
If used as the first parameter on the command line, the \fIcurlrc\fP config
file will not be read and used. See the --config for details on the default
config file search path.





|


1
2
3
4
5
6
7
8
Long: disable
Short: q
Help: Disable .curlrc
Category: curl
---
If used as the first parameter on the command line, the *curlrc* config
file will not be read and used. See the --config for details on the default
config file search path.
Changes to jni/curl/docs/cmdline-opts/dns-servers.d.
1
2
3
4
5
6
7
8
9
10
11
Long: dns-servers
Arg: <addresses>
Help: DNS server addrs to use
Requires: c-ares
Added: 7.33.0
Category: dns
---
Set the list of DNS servers to be used instead of the system default.
The list of IP addresses should be separated with commas. Port numbers
may also optionally be given as \fI:<port-number>\fP after each IP
address.









|

1
2
3
4
5
6
7
8
9
10
11
Long: dns-servers
Arg: <addresses>
Help: DNS server addrs to use
Requires: c-ares
Added: 7.33.0
Category: dns
---
Set the list of DNS servers to be used instead of the system default.
The list of IP addresses should be separated with commas. Port numbers
may also optionally be given as *:<port-number>* after each IP
address.
Added jni/curl/docs/cmdline-opts/doh-cert-status.d.














>
>
>
>
>
>
>
1
2
3
4
5
6
7
Long: doh-cert-status
Help: Verify the status of the DOH server cert via OCSP-staple
Protocols: all
Added: 7.76.0
Category: dns tls
---
Same as --cert-status but used for DOH (DNS-over-HTTPS).
Added jni/curl/docs/cmdline-opts/doh-insecure.d.














>
>
>
>
>
>
>
1
2
3
4
5
6
7
Long: doh-insecure
Help: Allow insecure DOH server connections
Protocols: all
Added: 7.76.0
Category: dns tls
---
Same as --insecure but used for DOH (DNS-over-HTTPS).
Changes to jni/curl/docs/cmdline-opts/doh-url.d.
1
2
3
4
5
6
7
8
9





10
11
Long: doh-url
Arg: <URL>
Help: Resolve host names over DOH
Protocols: all
Added: 7.62.0
Category: dns
---
Specifies which DNS-over-HTTPS (DOH) server to use to resolve hostnames,
instead of using the default name resolver mechanism. The URL must be HTTPS.






If this option is used several times, the last one will be used.









>
>
>
>
>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Long: doh-url
Arg: <URL>
Help: Resolve host names over DOH
Protocols: all
Added: 7.62.0
Category: dns
---
Specifies which DNS-over-HTTPS (DOH) server to use to resolve hostnames,
instead of using the default name resolver mechanism. The URL must be HTTPS.

Some SSL options that you set for your transfer will apply to DOH since the
name lookups take place over SSL. However, the certificate verification
settings are not inherited and can be controlled separately via
--doh-insecure and --doh-cert-status.

If this option is used several times, the last one will be used.
Changes to jni/curl/docs/cmdline-opts/etag-compare.d.
11
12
13
14
15
16
17
18
19

For correct results, make sure that specified file contains only a single
line with a desired ETag. An empty file is parsed as an empty ETag.

Use the option --etag-save to first save the ETag from a response, and
then use this option to compare using the saved ETag in a subsequent request.

\fBCOMPARISON\fP: There are 2 types of comparison or ETags: Weak and Strong.
This option expects, and uses a strong comparison.







|

11
12
13
14
15
16
17
18
19

For correct results, make sure that specified file contains only a single
line with a desired ETag. An empty file is parsed as an empty ETag.

Use the option --etag-save to first save the ETag from a response, and
then use this option to compare using the saved ETag in a subsequent request.

**COMPARISON**: There are 2 types of comparison or ETags: Weak and Strong.
This option expects, and uses a strong comparison.
Added jni/curl/docs/cmdline-opts/fail-with-body.d.
































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Long: fail-with-body
Protocols: HTTP
Help: Fail on HTTP errors but save the body
Category: http output
Added: 7.76.0
See-also: fail
---

Return an error on server errors where the HTTP response code is 400 or
greater). In normal cases when an HTTP server fails to deliver a document, it
returns an HTML document stating so (which often also describes why and
more). This flag will still allow curl to outputting and save that content but
also to return error 22.

This is an alternative option to --fail which makes curl fail for the same
circumstances but without saving the content.
Changes to jni/curl/docs/cmdline-opts/fail.d.
1
2
3
4

5
6
7
8
9
10
11
Long: fail
Short: f
Protocols: HTTP
Help: Fail silently (no output at all) on HTTP errors

Category: important http
---
Fail silently (no output at all) on server errors. This is mostly done to
enable scripts etc to better deal with failed attempts. In normal cases
when an HTTP server fails to deliver a document, it returns an HTML document
stating so (which often also describes why and more). This flag will prevent
curl from outputting that and return error 22.




>







1
2
3
4
5
6
7
8
9
10
11
12
Long: fail
Short: f
Protocols: HTTP
Help: Fail silently (no output at all) on HTTP errors
See-also: fail-with-body
Category: important http
---
Fail silently (no output at all) on server errors. This is mostly done to
enable scripts etc to better deal with failed attempts. In normal cases
when an HTTP server fails to deliver a document, it returns an HTML document
stating so (which often also describes why and more). This flag will prevent
curl from outputting that and return error 22.
Changes to jni/curl/docs/cmdline-opts/form.d.
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
         -F '=plain text message' \\
.br
         -F '= <body>HTML message</body>;type=text/html' \\
.br
      -F '=)' -F '=@textfile.txt' ...  smtp://example.com

Data can be encoded for transfer using encoder=. Available encodings are
\fIbinary\fP and \fI8bit\fP that do nothing else than adding the corresponding
Content-Transfer-Encoding header, \fI7bit\fP that only rejects 8-bit characters
with a transfer error, \fIquoted-printable\fP and \fIbase64\fP that encodes
data according to the corresponding schemes, limiting lines length to
76 characters.

Example: send multipart mail with a quoted-printable text message and a
base64 attached file:

 curl -F '=text message;encoder=quoted-printable' \\
.br
      -F '=@localfile;encoder=base64' ... smtp://example.com







|
|
|
|
|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
         -F '=plain text message' \\
.br
         -F '= <body>HTML message</body>;type=text/html' \\
.br
      -F '=)' -F '=@textfile.txt' ...  smtp://example.com

Data can be encoded for transfer using encoder=. Available encodings are
*binary* and *8bit* that do nothing else than adding the corresponding
Content-Transfer-Encoding header, *7bit* that only rejects 8-bit characters
with a transfer error, *quoted-printable* and *base64* that encodes data
according to the corresponding schemes, limiting lines length to 76
characters.

Example: send multipart mail with a quoted-printable text message and a
base64 attached file:

 curl -F '=text message;encoder=quoted-printable' \\
.br
      -F '=@localfile;encoder=base64' ... smtp://example.com
Changes to jni/curl/docs/cmdline-opts/gen.pl.
59
60
61
62
63
64
65






66
67
68
69
70
71
72



73
74
75
76
77
78
79
    }
    return $l;
}

sub printdesc {
    my @desc = @_;
    for my $d (@desc) {






        # skip lines starting with space (examples)
        if($d =~ /^[^ ]/) {
            for my $k (keys %optlong) {
                my $l = manpageify($k);
                $d =~ s/--$k([^a-z0-9_-])/$l$1/;
            }
        }



        print $d;
    }
}

sub seealso {
    my($standalone, $data)=@_;
    if($standalone) {







>
>
>
>
>
>







>
>
>







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
    }
    return $l;
}

sub printdesc {
    my @desc = @_;
    for my $d (@desc) {
        if($d !~ /^.\\"/) {
            # **bold**
            $d =~ s/\*\*([^ ]*)\*\*/\\fB$1\\fP/g;
            # *italics*
            $d =~ s/\*([^ ]*)\*/\\fI$1\\fP/g;
        }
        # skip lines starting with space (examples)
        if($d =~ /^[^ ]/) {
            for my $k (keys %optlong) {
                my $l = manpageify($k);
                $d =~ s/--$k([^a-z0-9_-])/$l$1/;
            }
        }
        # quote "bare" minuses in the output
        $d =~ s/( |\\fI|^)--/$1\\-\\-/g;
        $d =~ s/([ -]|\\fI|^)-/$1\\-/g;
        print $d;
    }
}

sub seealso {
    my($standalone, $data)=@_;
    if($standalone) {
199
200
201
202
203
204
205



206
207
208
209
210
211
212
        $opt = "--$long";
    }

    if($arg) {
        $opt .= " $arg";
    }




    if($standalone) {
        print ".TH curl 1 \"30 Nov 2016\" \"curl 7.52.0\" \"curl manual\"\n";
        print ".SH OPTION\n";
        print "curl $opt\n";
    }
    else {
        print ".IP \"$opt\"\n";







>
>
>







208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
        $opt = "--$long";
    }

    if($arg) {
        $opt .= " $arg";
    }

    # quote "bare" minuses in opt
    $opt =~ s/( |^)--/$1\\-\\-/g;
    $opt =~ s/( |^)-/$1\\-/g;
    if($standalone) {
        print ".TH curl 1 \"30 Nov 2016\" \"curl 7.52.0\" \"curl manual\"\n";
        print ".SH OPTION\n";
        print "curl $opt\n";
    }
    else {
        print ".IP \"$opt\"\n";
Changes to jni/curl/docs/cmdline-opts/header.d.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
replace internally set headers without knowing perfectly well what you're
doing. Remove an internal header by giving a replacement without content on
the right side of the colon, as in: -H \&"Host:". If you send the custom
header with no-value then its header must be terminated with a semicolon, such
as \-H \&"X-Custom-Header;" to send "X-Custom-Header:".

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus \fBnot\fP add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

This option can take an argument in @filename style, which then adds a header
for each line in the input file. Using @- will make curl read the header file
from stdin. Added in 7.55.0.

You need --proxy-header to send custom headers intended for a HTTP
proxy. Added in 7.37.0.

Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
with a request body, will make curl send the data using chunked encoding.

Example:

 curl -H "X-First-Name: Joe" http://example.com/

\fBWARNING\fP: headers set with this option will be set in all requests - even
after redirects are followed, like when told with --location. This can lead to
the header being sent to other hosts than the original host, so sensitive
headers should be used with caution combined with following redirects.

This option can be used multiple times to add/replace/remove multiple headers.







|

















|





14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
replace internally set headers without knowing perfectly well what you're
doing. Remove an internal header by giving a replacement without content on
the right side of the colon, as in: -H \&"Host:". If you send the custom
header with no-value then its header must be terminated with a semicolon, such
as \-H \&"X-Custom-Header;" to send "X-Custom-Header:".

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus **not** add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

This option can take an argument in @filename style, which then adds a header
for each line in the input file. Using @- will make curl read the header file
from stdin. Added in 7.55.0.

You need --proxy-header to send custom headers intended for a HTTP
proxy. Added in 7.37.0.

Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
with a request body, will make curl send the data using chunked encoding.

Example:

 curl -H "X-First-Name: Joe" http://example.com/

**WARNING**: headers set with this option will be set in all requests - even
after redirects are followed, like when told with --location. This can lead to
the header being sent to other hosts than the original host, so sensitive
headers should be used with caution combined with following redirects.

This option can be used multiple times to add/replace/remove multiple headers.
Changes to jni/curl/docs/cmdline-opts/max-filesize.d.
8
9
10
11
12
13
14
15
16
17
requested is larger than this value, the transfer will not start and curl will
return with exit code 63.

A size modifier may be used. For example, Appending 'k' or 'K' will count the
number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it
gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)

\fBNOTE:\fP The file size is not always known prior to download, and for such
files this option has no effect even if the file transfer ends up being larger
than this given limit. This concerns both FTP and HTTP transfers.







|


8
9
10
11
12
13
14
15
16
17
requested is larger than this value, the transfer will not start and curl will
return with exit code 63.

A size modifier may be used. For example, Appending 'k' or 'K' will count the
number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it
gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)

**NOTE**: The file size is not always known prior to download, and for such
files this option has no effect even if the file transfer ends up being larger
than this given limit. This concerns both FTP and HTTP transfers.
Changes to jni/curl/docs/cmdline-opts/metalink.d.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Example to use a remote Metalink file:

 curl --metalink http://www.example.com/example.metalink

To use a Metalink file in the local file system, use FILE protocol (file://):

 curl --metalink file://example.metalink

Please note that if FILE protocol is disabled, there is no way to use a local
Metalink file at the time of this writing. Also note that if --metalink and
--include are used together, --include will be ignored. This is because
including headers in the response will break Metalink parser and if the
headers are included in the file described in Metalink file, hash check will
fail.







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Example to use a remote Metalink file:

 curl --metalink http://www.example.com/example.metalink

To use a Metalink file in the local file system, use FILE protocol (file://):

 curl --metalink file:///example.metalink

Please note that if FILE protocol is disabled, there is no way to use a local
Metalink file at the time of this writing. Also note that if --metalink and
--include are used together, --include will be ignored. This is because
including headers in the response will break Metalink parser and if the
headers are included in the file described in Metalink file, hash check will
fail.
Changes to jni/curl/docs/cmdline-opts/netrc-optional.d.
1
2
3
4
5
6
7
8
Long: netrc-optional
Help: Use either .netrc or URL
Mutexed: netrc
See-also: netrc-file
Category: curl
---
Very similar to --netrc, but this option makes the .netrc usage \fBoptional\fP
and not mandatory as the --netrc option does.






|

1
2
3
4
5
6
7
8
Long: netrc-optional
Help: Use either .netrc or URL
Mutexed: netrc
See-also: netrc-file
Category: curl
---
Very similar to --netrc, but this option makes the .netrc usage **optional**
and not mandatory as the --netrc option does.
Changes to jni/curl/docs/cmdline-opts/netrc.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: netrc
Short: n
Help: Must read .netrc for user name and password
Category: curl
---
Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
home directory for login name and password. This is typically used for FTP on
Unix. If used with HTTP, curl will enable user authentication. See
\fInetrc(5)\fP \fIftp(1)\fP for details on the file format. Curl will not
complain if that file doesn't have the right permissions (it should not be
either world- or group-readable). The environment variable "HOME" is used to
find the home directory.

A quick and very simple example of how to setup a \fI.netrc\fP to allow curl
to FTP to the machine host.domain.com with user name \&'myself' and password
\&'secret' should look similar to:

.B "machine host.domain.com login myself password secret"





|
|

|




|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: netrc
Short: n
Help: Must read .netrc for user name and password
Category: curl
---
Makes curl scan the *.netrc* (*_netrc* on Windows) file in the user's home
directory for login name and password. This is typically used for FTP on
Unix. If used with HTTP, curl will enable user authentication. See
*netrc(5)* *ftp(1)* for details on the file format. Curl will not
complain if that file doesn't have the right permissions (it should not be
either world- or group-readable). The environment variable "HOME" is used to
find the home directory.

A quick and very simple example of how to setup a *.netrc* to allow curl
to FTP to the machine host.domain.com with user name \&'myself' and password
\&'secret' should look similar to:

.B "machine host.domain.com login myself password secret"
Changes to jni/curl/docs/cmdline-opts/page-footer.
40
41
42
43
44
45
46
47
48



49
50
51
52
53
54
55
IPv6 numerical addresses are compared as strings, so they will only match if
the representations are the same: "::1" is the same as "::0:1" but they don't
match.
.IP "CURL_SSL_BACKEND <TLS backend>"
If curl was built with support for "MultiSSL", meaning that it has built-in
support for more than one TLS backend, this environment variable can be set to
the case insensitive name of the particular backend to use when curl is
invoked. Setting a name that isn't a built-in alternative, will make curl
stay with the default.



.IP "QLOGDIR <directory name>"
If curl was built with HTTP/3 support, setting this environment variable to a
local directory will make curl produce qlogs in that directory, using file
names named after the destination connection id (in hex). Do note that these
files can become rather large. Works with both QUIC backends.
.IP "SSLKEYLOGFILE <file name>"
If you set this environment variable to a file name, curl will store TLS







|

>
>
>







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
IPv6 numerical addresses are compared as strings, so they will only match if
the representations are the same: "::1" is the same as "::0:1" but they don't
match.
.IP "CURL_SSL_BACKEND <TLS backend>"
If curl was built with support for "MultiSSL", meaning that it has built-in
support for more than one TLS backend, this environment variable can be set to
the case insensitive name of the particular backend to use when curl is
invoked. Setting a name that isn't a built-in alternative will make curl
stay with the default.

SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
.IP "QLOGDIR <directory name>"
If curl was built with HTTP/3 support, setting this environment variable to a
local directory will make curl produce qlogs in that directory, using file
names named after the destination connection id (in hex). Do note that these
files can become rather large. Works with both QUIC backends.
.IP "SSLKEYLOGFILE <file name>"
If you set this environment variable to a file name, curl will store TLS
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
If no protocol is specified in the proxy string or if the string doesn't match
a supported one, the proxy will be treated as an HTTP proxy.

The supported proxy protocol prefixes are as follows:
.IP "http://"
Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
.IP "https://"
Makes it treated as an \fBHTTPS\fP proxy.
.IP "socks4://"
Makes it the equivalent of --socks4
.IP "socks4a://"
Makes it the equivalent of --socks4a
.IP "socks5://"
Makes it the equivalent of --socks5
.IP "socks5h://"







|







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
If no protocol is specified in the proxy string or if the string doesn't match
a supported one, the proxy will be treated as an HTTP proxy.

The supported proxy protocol prefixes are as follows:
.IP "http://"
Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
.IP "https://"
Makes it treated as an **HTTPS** proxy.
.IP "socks4://"
Makes it the equivalent of --socks4
.IP "socks4a://"
Makes it the equivalent of --socks4a
.IP "socks5://"
Makes it the equivalent of --socks5
.IP "socks5h://"
Changes to jni/curl/docs/cmdline-opts/page-header.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

curl offers a busload of useful tricks like proxy support, user
authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer
resume, Metalink, and more. As you will see below, the number of features will
make your head spin!

curl is powered by libcurl for all transfer-related features. See
\fIlibcurl(3)\fP for details.
.SH URL
The URL syntax is protocol-dependent. You'll find a detailed description in
RFC 3986.

You can specify multiple URLs or parts of URLs by writing part sets within
braces and quoting the URL as in:








|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

curl offers a busload of useful tricks like proxy support, user
authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer
resume, Metalink, and more. As you will see below, the number of features will
make your head spin!

curl is powered by libcurl for all transfer-related features. See
*libcurl(3)* for details.
.SH URL
The URL syntax is protocol-dependent. You'll find a detailed description in
RFC 3986.

You can specify multiple URLs or parts of URLs by writing part sets within
braces and quoting the URL as in:

88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
If you specify URL without protocol:// prefix, curl will attempt to guess what
protocol you might want. It will then default to HTTP but try other protocols
based on often-used host name prefixes. For example, for host names starting
with "ftp." curl will assume you want to speak FTP.

curl will do its best to use what you pass to it as a URL. It is not trying to
validate it as a syntactically correct URL by any means but is instead
\fBvery\fP liberal with what it accepts.

curl will attempt to re-use connections for multiple file transfers, so that
getting many files from the same server will not do multiple connects /
handshakes. This improves speed. Of course this is only done on files
specified on a single command line and cannot be used between separate curl
invokes.
.SH OUTPUT







|







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
If you specify URL without protocol:// prefix, curl will attempt to guess what
protocol you might want. It will then default to HTTP but try other protocols
based on often-used host name prefixes. For example, for host names starting
with "ftp." curl will assume you want to speak FTP.

curl will do its best to use what you pass to it as a URL. It is not trying to
validate it as a syntactically correct URL by any means but is instead
**very** liberal with what it accepts.

curl will attempt to re-use connections for multiple file transfers, so that
getting many files from the same server will not do multiple connects /
handshakes. This improves speed. Of course this is only done on files
specified on a single command line and cannot be used between separate curl
invokes.
.SH OUTPUT
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
amount of transferred data, transfer speeds and estimated time left, etc. The
progress meter displays number of bytes and the speeds are in bytes per
second. The suffixes (k, M, G, T, P) are 1024 based. For example 1k is 1024
bytes. 1M is 1048576 bytes.

curl displays this data to the terminal by default, so if you invoke curl to
do an operation and it is about to write data to the terminal, it
\fIdisables\fP the progress meter as otherwise it would mess up the output
mixing progress meter and response data.

If you want a progress meter for HTTP POST or PUT requests, you need to
redirect the response output to a file, using shell redirect (>), --output or
similar.

It is not the same case for FTP upload as that operation does not spit out







|







162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
amount of transferred data, transfer speeds and estimated time left, etc. The
progress meter displays number of bytes and the speeds are in bytes per
second. The suffixes (k, M, G, T, P) are 1024 based. For example 1k is 1024
bytes. 1M is 1048576 bytes.

curl displays this data to the terminal by default, so if you invoke curl to
do an operation and it is about to write data to the terminal, it
*disables* the progress meter as otherwise it would mess up the output
mixing progress meter and response data.

If you want a progress meter for HTTP POST or PUT requests, you need to
redirect the response output to a file, using shell redirect (>), --output or
similar.

It is not the same case for FTP upload as that operation does not spit out
188
189
190
191
192
193
194
195
196
197
198
199
200
separator. The long "double-dash" form, --data for example, requires a space
between it and its value.

Short version options that don't need any additional values can be used
immediately next to each other, like for example you can specify all the
options -O, -L and -v at once as -OLv.

In general, all boolean options are enabled with --\fBoption\fP and yet again
disabled with --\fBno-\fPoption. That is, you use the exact same option name
but prefix it with "no-". However, in this list we mostly only list and show
the --option version of them. (This concept with --no options was added in
7.19.0. Previously most options were toggled on/off on repeated use of the
same command line option.)







|
|




188
189
190
191
192
193
194
195
196
197
198
199
200
separator. The long "double-dash" form, --data for example, requires a space
between it and its value.

Short version options that don't need any additional values can be used
immediately next to each other, like for example you can specify all the
options -O, -L and -v at once as -OLv.

In general, all boolean options are enabled with --**option** and yet again
disabled with --**no-**option. That is, you use the exact same option name
but prefix it with "no-". However, in this list we mostly only list and show
the --option version of them. (This concept with --no options was added in
7.19.0. Previously most options were toggled on/off on repeated use of the
same command line option.)
Changes to jni/curl/docs/cmdline-opts/proto-default.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Long: proto-default
Help: Use PROTOCOL for any URL missing a scheme
Arg: <protocol>
Added: 7.45.0
Category: connection curl
---
Tells curl to use \fIprotocol\fP for any URL missing a scheme name.

Example:

 curl --proto-default https ftp.mozilla.org

An unknown or unsupported protocol causes error
\fICURLE_UNSUPPORTED_PROTOCOL\fP (1).

This option does not change the default proxy protocol (http).

Without this option curl would make a guess based on the host, see --url for
details.






|






|





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Long: proto-default
Help: Use PROTOCOL for any URL missing a scheme
Arg: <protocol>
Added: 7.45.0
Category: connection curl
---
Tells curl to use *protocol* for any URL missing a scheme name.

Example:

 curl --proto-default https ftp.mozilla.org

An unknown or unsupported protocol causes error
*CURLE_UNSUPPORTED_PROTOCOL* (1).

This option does not change the default proxy protocol (http).

Without this option curl would make a guess based on the host, see --url for
details.
Changes to jni/curl/docs/cmdline-opts/proto-redir.d.
11
12
13
14
15
16
17
18
19
Example, allow only HTTP and HTTPS on redirect:

 curl --proto-redir -all,http,https http://example.com

By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect (7.65.2).
Older versions of curl allowed all protocols on redirect except several
disabled for security reasons: Since 7.19.4 FILE and SCP are disabled, and
since 7.40.0 SMB and SMBS are also disabled. Specifying \fIall\fP or \fI+all\fP
enables all protocols on redirect, including those disabled for security.







|

11
12
13
14
15
16
17
18
19
Example, allow only HTTP and HTTPS on redirect:

 curl --proto-redir -all,http,https http://example.com

By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect (7.65.2).
Older versions of curl allowed all protocols on redirect except several
disabled for security reasons: Since 7.19.4 FILE and SCP are disabled, and
since 7.40.0 SMB and SMBS are also disabled. Specifying *all* or *+all*
enables all protocols on redirect, including those disabled for security.
Changes to jni/curl/docs/cmdline-opts/proxy-header.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Long: proxy-header
Arg: <header/@file>
Help: Pass custom header(s) to proxy
Protocols: HTTP
Added: 7.37.0
Category: proxy
---
Extra header to include in the request when sending HTTP to a proxy. You may
specify any number of extra headers. This is the equivalent option to --header
but is for proxy communication only like in CONNECT requests when you want a
separate header sent to the proxy to what is sent to the actual remote host.

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus \fBnot\fP add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

Headers specified with this option will not be included in requests that curl
knows will not be sent to a proxy.

Starting in 7.55.0, this option can take an argument in @filename style, which













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Long: proxy-header
Arg: <header/@file>
Help: Pass custom header(s) to proxy
Protocols: HTTP
Added: 7.37.0
Category: proxy
---
Extra header to include in the request when sending HTTP to a proxy. You may
specify any number of extra headers. This is the equivalent option to --header
but is for proxy communication only like in CONNECT requests when you want a
separate header sent to the proxy to what is sent to the actual remote host.

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus **not** add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

Headers specified with this option will not be included in requests that curl
knows will not be sent to a proxy.

Starting in 7.55.0, this option can take an argument in @filename style, which
Changes to jni/curl/docs/cmdline-opts/quote.d.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
itself before sending them to the server.  File names may be quoted
shell-style to embed spaces or special characters.  Following is the list of
all supported SFTP quote commands:
.RS
.IP "atime date file"
The atime command sets the last access time of the file named by the file
operand. The <date expression> can be all sorts of date strings, see the
\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
.IP "chgrp group file"
The chgrp command sets the group ID of the file named by the file operand to
the group ID specified by the group operand. The group operand is a decimal
integer group ID.
.IP "chmod mode file"
The chmod command modifies the file mode bits of the specified file. The
mode operand is an octal integer mode number.
.IP "chown user file"
The chown command sets the owner of the file named by the file operand to the
user ID specified by the user operand. The user operand is a decimal
integer user ID.
.IP "ln source_file target_file"
The ln and symlink commands create a symbolic link at the target_file location
pointing to the source_file location.
.IP "mkdir directory_name"
The mkdir command creates the directory named by the directory_name operand.
.IP "mtime date file"
The mtime command sets the last modification time of the file named by the
file operand. The <date expression> can be all sorts of date strings, see the
\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
.IP "pwd"
The pwd command returns the absolute pathname of the current working directory.
.IP "rename source target"
The rename command renames the file or directory named by the source
operand to the destination path named by the target operand.
.IP "rm file"
The rm command removes the file specified by the file operand.
.IP "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
.IP "symlink source_file target_file"
See ln.
.RE







|



















|













26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
itself before sending them to the server.  File names may be quoted
shell-style to embed spaces or special characters.  Following is the list of
all supported SFTP quote commands:
.RS
.IP "atime date file"
The atime command sets the last access time of the file named by the file
operand. The <date expression> can be all sorts of date strings, see the
*curl_getdate(3)* man page for date expression details. (Added in 7.73.0)
.IP "chgrp group file"
The chgrp command sets the group ID of the file named by the file operand to
the group ID specified by the group operand. The group operand is a decimal
integer group ID.
.IP "chmod mode file"
The chmod command modifies the file mode bits of the specified file. The
mode operand is an octal integer mode number.
.IP "chown user file"
The chown command sets the owner of the file named by the file operand to the
user ID specified by the user operand. The user operand is a decimal
integer user ID.
.IP "ln source_file target_file"
The ln and symlink commands create a symbolic link at the target_file location
pointing to the source_file location.
.IP "mkdir directory_name"
The mkdir command creates the directory named by the directory_name operand.
.IP "mtime date file"
The mtime command sets the last modification time of the file named by the
file operand. The <date expression> can be all sorts of date strings, see the
*curl_getdate(3)* man page for date expression details. (Added in 7.73.0)
.IP "pwd"
The pwd command returns the absolute pathname of the current working directory.
.IP "rename source target"
The rename command renames the file or directory named by the source
operand to the destination path named by the target operand.
.IP "rm file"
The rm command removes the file specified by the file operand.
.IP "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
.IP "symlink source_file target_file"
See ln.
.RE
Changes to jni/curl/docs/cmdline-opts/remote-header-name.d.
11
12
13
14
15
16
17
18
19
20
in the current working directory it will not be overwritten and an error will
occur. If the server doesn't specify a file name then this option has no
effect.

There's no attempt to decode %-sequences (yet) in the provided file name, so
this option may provide you with rather unexpected file names.

\fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
rogue server could send you the name of a DLL or other file that could possibly
be loaded automatically by Windows or some third party software.







|


11
12
13
14
15
16
17
18
19
20
in the current working directory it will not be overwritten and an error will
occur. If the server doesn't specify a file name then this option has no
effect.

There's no attempt to decode %-sequences (yet) in the provided file name, so
this option may provide you with rather unexpected file names.

**WARNING**: Exercise judicious use of this option, especially on Windows. A
rogue server could send you the name of a DLL or other file that could possibly
be loaded automatically by Windows or some third party software.
Changes to jni/curl/docs/cmdline-opts/retry-all-errors.d.
14
15
16
17
18
19
20








Warning: For server compatibility curl attempts to retry failed flaky transfers
as close as possible to how they were started, but this is not possible with
redirected input or output. For example, before retrying it removes output data
from a failed partial transfer that was written to an output file. However this
is not true of data redirected to a | pipe or > file, which are not reset. We
strongly suggest don't parse or record output via redirect in combination with
this option, since you may receive duplicate data.















>
>
>
>
>
>
>
>
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Warning: For server compatibility curl attempts to retry failed flaky transfers
as close as possible to how they were started, but this is not possible with
redirected input or output. For example, before retrying it removes output data
from a failed partial transfer that was written to an output file. However this
is not true of data redirected to a | pipe or > file, which are not reset. We
strongly suggest don't parse or record output via redirect in combination with
this option, since you may receive duplicate data.

By default curl will not error on an HTTP response code that indicates an HTTP
error, if the transfer was successful. For example, if a server replies 404
Not Found and the reply is fully received then that is not an error. When
--retry is used then curl will retry on some HTTP response codes that indicate
transient HTTP errors, but that does not include most 4xx response codes such
as 404. If you want to retry on all response codes that indicate HTTP errors
(4xx and 5xx) then combine with --fail.
Changes to jni/curl/docs/cmdline-opts/retry.d.
1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
Long: retry
Arg: <num>
Added: 7.12.3
Help: Retry request if transient problems occur
Category: curl
---
If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0
makes curl do no retries (which is the default). Transient error means either:
a timeout, an FTP 4xx response code or an HTTP 408, 429 or 5xx response code.


When curl is about to retry a transfer, it will first wait one second and then
for all forthcoming retries it will double the waiting time until it reaches
10 minutes which then will be the delay between the rest of the retries.  By
using --retry-delay you disable this exponential backoff algorithm. See also
--retry-max-time to limit the total time allowed for retries.










|
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: retry
Arg: <num>
Added: 7.12.3
Help: Retry request if transient problems occur
Category: curl
---
If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0
makes curl do no retries (which is the default). Transient error means either:
a timeout, an FTP 4xx response code or an HTTP 408, 429, 500, 502, 503 or 504
response code.

When curl is about to retry a transfer, it will first wait one second and then
for all forthcoming retries it will double the waiting time until it reaches
10 minutes which then will be the delay between the rest of the retries.  By
using --retry-delay you disable this exponential backoff algorithm. See also
--retry-max-time to limit the total time allowed for retries.

Changes to jni/curl/docs/cmdline-opts/stderr.d.
1

2
3
4
5
6
7
8
Long: stderr

Help: Where to redirect stderr
See-also: verbose silent
Category: verbose
---
Redirect all writes to stderr to the specified file instead. If the file name
is a plain '-', it is instead written to stdout.


>







1
2
3
4
5
6
7
8
9
Long: stderr
Arg: <file>
Help: Where to redirect stderr
See-also: verbose silent
Category: verbose
---
Redirect all writes to stderr to the specified file instead. If the file name
is a plain '-', it is instead written to stdout.

Changes to jni/curl/docs/cmdline-opts/tcp-nodelay.d.
1
2
3
4
5
6
7
8
9
10
Long: tcp-nodelay
Help: Use the TCP_NODELAY option
Added: 7.11.2
Category: connection
---
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
details about this option.

Since 7.50.2, curl sets this option by default and you need to explicitly
switch it off if you don't want it on.





|




1
2
3
4
5
6
7
8
9
10
Long: tcp-nodelay
Help: Use the TCP_NODELAY option
Added: 7.11.2
Category: connection
---
Turn on the TCP_NODELAY option. See the *curl_easy_setopt(3)* man page for
details about this option.

Since 7.50.2, curl sets this option by default and you need to explicitly
switch it off if you don't want it on.
Changes to jni/curl/docs/cmdline-opts/time-cond.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: time-cond
Short: z
Arg: <time>
Help: Transfer based on a time condition
Protocols: HTTP FTP
Category: http ftp
---
Request a file that has been modified later than the given time and date, or
one that has been modified before that time. The <date expression> can be all
sorts of date strings or if it doesn't match any internal ones, it is taken as
a filename and tries to get the modification date (mtime) from <file>
instead. See the \fIcurl_getdate(3)\fP man pages for date expression details.

Start the date expression with a dash (-) to make it request for a document
that is older than the given date/time, default is a document that is newer
than the specified date/time.

If this option is used several times, the last one will be used.











|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: time-cond
Short: z
Arg: <time>
Help: Transfer based on a time condition
Protocols: HTTP FTP
Category: http ftp
---
Request a file that has been modified later than the given time and date, or
one that has been modified before that time. The <date expression> can be all
sorts of date strings or if it doesn't match any internal ones, it is taken as
a filename and tries to get the modification date (mtime) from <file>
instead. See the *curl_getdate(3)* man pages for date expression details.

Start the date expression with a dash (-) to make it request for a document
that is older than the given date/time, default is a document that is newer
than the specified date/time.

If this option is used several times, the last one will be used.
Changes to jni/curl/docs/cmdline-opts/version.d.
22
23
24
25
26
27
28



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68




69
70


71
.IP "brotli"
Support for automatic brotli compression over HTTP(S).
.IP "CharConv"
curl was built with support for character set conversions (like EBCDIC)
.IP "Debug"
This curl uses a libcurl built with Debug. This enables more error-tracking
and memory debugging etc. For curl-developers only!



.IP "GSS-API"
GSS-API is supported.
.IP "HSTS"
HSTS support is present.
.IP "HTTP2"
HTTP/2 support has been built-in.
.IP "HTTP3"
HTTP/3 support has been built-in.
.IP "HTTPS-proxy"
This curl is built to support HTTPS proxy.
.IP "IDN"
This curl supports IDN - international domain names.
.IP "IPv6"
You can use IPv6 with this.
.IP "krb4"
Krb4 for FTP is supported.
.IP "Largefile"
This curl supports transfers of large files, files larger than 2GB.
.IP "libz"
Automatic decompression of compressed files over HTTP is supported.

.IP "Metalink"
This curl supports Metalink
.IP "MultiSSL"
This curl supports multiple TLS backends.
.IP "NTLM"
NTLM authentication is supported.
.IP "NTLM"
NTLM authentication is supported.
.IP "PSL"
PSL is short for Public Suffix List and means that this curl has been built
with knowledge about "public suffixes".
.IP "SPNEGO"
SPNEGO authentication is supported.
.IP "SSL"
SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S
and so on.
.IP "SSPI"
SSPI is supported.
.IP "TLS-SRP"
SRP (Secure Remote Password) authentication is supported for TLS.




.IP "UnixSockets"
Unix sockets support is provided.


.RE







>
>
>














|
|



|
>

|




|
|












>
>
>
>


>
>

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
.IP "brotli"
Support for automatic brotli compression over HTTP(S).
.IP "CharConv"
curl was built with support for character set conversions (like EBCDIC)
.IP "Debug"
This curl uses a libcurl built with Debug. This enables more error-tracking
and memory debugging etc. For curl-developers only!
.IP "gsasl"
The built-in SASL authentication includes extensions to support SCRAM because
libcurl was built with libgsasl.
.IP "GSS-API"
GSS-API is supported.
.IP "HSTS"
HSTS support is present.
.IP "HTTP2"
HTTP/2 support has been built-in.
.IP "HTTP3"
HTTP/3 support has been built-in.
.IP "HTTPS-proxy"
This curl is built to support HTTPS proxy.
.IP "IDN"
This curl supports IDN - international domain names.
.IP "IPv6"
You can use IPv6 with this.
.IP "Kerberos"
Kerberos V5 authentication is supported.
.IP "Largefile"
This curl supports transfers of large files, files larger than 2GB.
.IP "libz"
Automatic decompression (via gzip, deflate) of compressed files over HTTP is
supported.
.IP "Metalink"
This curl supports Metalink.
.IP "MultiSSL"
This curl supports multiple TLS backends.
.IP "NTLM"
NTLM authentication is supported.
.IP "NTLM_WB"
NTLM delegation to winbind helper is supported.
.IP "PSL"
PSL is short for Public Suffix List and means that this curl has been built
with knowledge about "public suffixes".
.IP "SPNEGO"
SPNEGO authentication is supported.
.IP "SSL"
SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S
and so on.
.IP "SSPI"
SSPI is supported.
.IP "TLS-SRP"
SRP (Secure Remote Password) authentication is supported for TLS.
.IP "TrackMemory"
Debug memory tracking is supported.
.IP "Unicode"
Unicode support on Windows.
.IP "UnixSockets"
Unix sockets support is provided.
.IP "zstd"
Automatic decompression (via zstd) of compressed files over HTTP is supported.
.RE
Changes to jni/curl/docs/cmdline-opts/write-out.d.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.B content_type
The Content-Type of the requested document, if there was any.
.TP
.B errormsg
The error message. (Added in 7.75.0)
.TP
.B exitcode
The numerical exitcode. (Added in 7.75.0)
.TP
.B filename_effective
The ultimate filename that curl writes out to. This is only meaningful if curl
is told to write to a file with the --remote-name or --output
option. It's most useful in combination with the --remote-header-name
option. (Added in 7.26.0)
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
server. (Added in 7.15.4)
.TP
.B http_code
The numerical response code that was found in the last retrieved HTTP(S) or
FTP(s) transfer. In 7.18.2 the alias \fBresponse_code\fP was added to show the
same info.
.TP
.B http_connect
The numerical code that was found in the last response (from a proxy) to a
curl CONNECT request. (Added in 7.12.4)
.TP
.B http_version







|













|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.B content_type
The Content-Type of the requested document, if there was any.
.TP
.B errormsg
The error message. (Added in 7.75.0)
.TP
.B exitcode
The numerical exitcode of the transfer. (Added in 7.75.0)
.TP
.B filename_effective
The ultimate filename that curl writes out to. This is only meaningful if curl
is told to write to a file with the --remote-name or --output
option. It's most useful in combination with the --remote-header-name
option. (Added in 7.26.0)
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
server. (Added in 7.15.4)
.TP
.B http_code
The numerical response code that was found in the last retrieved HTTP(S) or
FTP(s) transfer. In 7.18.2 the alias **response_code** was added to show the
same info.
.TP
.B http_connect
The numerical code that was found in the last response (from a proxy) to a
curl CONNECT request. (Added in 7.12.4)
.TP
.B http_version
87
88
89
90
91
92
93
94



95
96
97
98
99
100
101
.B proxy_ssl_verify_result
The result of the HTTPS proxy's SSL peer certificate verification that was
requested. 0 means the verification was successful. (Added in 7.52.0)
.TP
.B redirect_url
When an HTTP request was made without --location to follow redirects (or when
--max-redir is met), this variable will show the actual URL a redirect
\fIwould\fP have gone to. (Added in 7.18.2)



.TP
.B remote_ip
The remote IP address of the most recently done connection - can be either
IPv4 or IPv6 (Added in 7.29.0)
.TP
.B remote_port
The remote port number of the most recently done connection (Added in 7.29.0)







|
>
>
>







87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
.B proxy_ssl_verify_result
The result of the HTTPS proxy's SSL peer certificate verification that was
requested. 0 means the verification was successful. (Added in 7.52.0)
.TP
.B redirect_url
When an HTTP request was made without --location to follow redirects (or when
--max-redir is met), this variable will show the actual URL a redirect
*would* have gone to. (Added in 7.18.2)
.TP
.B referer
The Referer: header, if there was any. (Added in 7.76.0)
.TP
.B remote_ip
The remote IP address of the most recently done connection - can be either
IPv4 or IPv6 (Added in 7.29.0)
.TP
.B remote_port
The remote port number of the most recently done connection (Added in 7.29.0)
Changes to jni/curl/docs/curl-config.1.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "November 04, 2020" "Curl 7.75.0" "curl-config manual"

.SH NAME
curl-config \- Get information about a libcurl installation
.SH SYNOPSIS
.B curl-config [options]
.SH DESCRIPTION
.B curl-config







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "November 04, 2020" "Curl 7.76.0" "curl-config manual"

.SH NAME
curl-config \- Get information about a libcurl installation
.SH SYNOPSIS
.B curl-config [options]
.SH DESCRIPTION
.B curl-config
Changes to jni/curl/docs/curl.1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "November 16, 2016" "Curl 7.75.0" "Curl Manual"

.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
.B curl







|
















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 \- 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "November 16, 2016" "Curl 7.76.0" "Curl Manual"

.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
.B curl
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
curl will attempt to re-use connections for multiple file transfers, so that
getting many files from the same server will not do multiple connects /
handshakes. This improves speed. Of course this is only done on files
specified on a single command line and cannot be used between separate curl
invokes.
.SH OUTPUT
If not told otherwise, curl writes the received data to stdout. It can be
instructed to instead save that data into a local file, using the \fI-o, --output\fP or
\fI-O, --remote-name\fP options. If curl is given multiple URLs to transfer on the
command line, it similarly needs multiple options for where to save them.

curl does not parse or otherwise "understand" the content it gets or writes as
output. It does no encoding or decoding, unless explicitly asked so with
dedicated command line options.
.SH PROTOCOLS
curl supports numerous protocols, or put in URL terms: schemes. Your







|
|







98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
curl will attempt to re-use connections for multiple file transfers, so that
getting many files from the same server will not do multiple connects /
handshakes. This improves speed. Of course this is only done on files
specified on a single command line and cannot be used between separate curl
invokes.
.SH OUTPUT
If not told otherwise, curl writes the received data to stdout. It can be
instructed to instead save that data into a local file, using the \fI\-o, \-\-output\fP or
\fI\-O, \-\-remote-name\fP options. If curl is given multiple URLs to transfer on the
command line, it similarly needs multiple options for where to save them.

curl does not parse or otherwise "understand" the content it gets or writes as
output. It does no encoding or decoding, unless explicitly asked so with
dedicated command line options.
.SH PROTOCOLS
curl supports numerous protocols, or put in URL terms: schemes. Your
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271

curl displays this data to the terminal by default, so if you invoke curl to
do an operation and it is about to write data to the terminal, it
\fIdisables\fP the progress meter as otherwise it would mess up the output
mixing progress meter and response data.

If you want a progress meter for HTTP POST or PUT requests, you need to
redirect the response output to a file, using shell redirect (>), \fI-o, --output\fP or
similar.

It is not the same case for FTP upload as that operation does not spit out
any response data to the terminal.

If you prefer a progress "bar" instead of the regular meter, \fI-#, --progress-bar\fP is
your friend. You can also disable the progress meter completely with the
\fI-s, --silent\fP option.
.SH OPTIONS
Options start with one or two dashes. Many of the options require an
additional value next to them.

The short "single-dash" form of the options, -d for example, may be used with
or without a space between it and its value, although a space is a recommended
separator. The long "double-dash" form, \fI-d, --data\fP for example, requires a space
between it and its value.

Short version options that don't need any additional values can be used
immediately next to each other, like for example you can specify all the
options -O, -L and -v at once as -OLv.

In general, all boolean options are enabled with --\fBoption\fP and yet again
disabled with --\fBno-\fPoption. That is, you use the exact same option name
but prefix it with "no-". However, in this list we mostly only list and show
the --option version of them. (This concept with --no options was added in
7.19.0. Previously most options were toggled on/off on repeated use of the
same command line option.)
.IP "--abstract-unix-socket <path>"
(HTTP) Connect through an abstract Unix domain socket, instead of using the network.
Note: netstat shows the path of an abstract socket prefixed with '@', however
the <path> argument should not have this leading character.

Added in 7.53.0.
.IP "--alt-svc <file name>"
(HTTPS) WARNING: this option is experimental. Do not use in production.

This option enables the alt-svc parser in curl. If the file name points to an
existing alt-svc cache file, that will be used. After a completed transfer,
the cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle the cache in memory.

If this option is used several times, curl will load contents from all the
files but the last one will be used for saving.

Added in 7.64.1.
.IP "--anyauth"
(HTTP) Tells curl to figure out authentication method by itself, and use the most
secure one the remote site claims to support. This is done by first doing a
request and checking the response-headers, thus possibly inducing an extra
network round-trip. This is used instead of setting a specific authentication
method, which you can do with \fI--basic\fP, \fI--digest\fP, \fI--ntlm\fP, and \fI--negotiate\fP.

Using \fI--anyauth\fP is not recommended if you do uploads from stdin, since it may
require data to be sent twice and then the client must be able to rewind. If
the need should arise when uploading from stdin, the upload operation will
fail.

Used together with \fI-u, --user\fP.

See also \fI--proxy-anyauth\fP, \fI--basic\fP and \fI--digest\fP.
.IP "-a, --append"
(FTP SFTP) When used in an upload, this makes curl append to the target file instead of
overwriting it. If the remote file doesn't exist, it will be created.  Note
that this flag is ignored by some SFTP servers (including OpenSSH).
.IP "--aws-sigv4 <provider1[:provider2[:region[:service]]]>"
Use AWS V4 signature authentication in the transfer.

The provider argument is a string that is used by the algorithm when creating
outgoing authentication headers.

The region argument is a string that points to a geographic area of
a resources collection (region-code) when the region name is omitted from
the endpoint.

The service argument is a string that points to a function provided by a cloud
(service-code) when the service name is omitted from the endpoint.

Added in 7.75.0.
.IP "--basic"
(HTTP) Tells curl to use HTTP Basic authentication with the remote host. This is the
default and this option is usually pointless, unless you use it to override a
previously set option that sets a different authentication method (such as
\fI--ntlm\fP, \fI--digest\fP, or \fI--negotiate\fP).

Used together with \fI-u, --user\fP.

See also \fI--proxy-basic\fP.
.IP "--cacert <file>"
(TLS) Tells curl to use the specified certificate file to verify the peer. The file
may contain multiple CA certificates. The certificate(s) must be in PEM
format. Normally curl is built to use a default file for this, so this option
is typically used to alter that default file.

curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is
set, and uses the given path as a path to a CA cert bundle. This option







|





|

|




|

|




|

|
|

|


|





|













|




|

|




|


|



|













|



|

|


|







167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271

curl displays this data to the terminal by default, so if you invoke curl to
do an operation and it is about to write data to the terminal, it
\fIdisables\fP the progress meter as otherwise it would mess up the output
mixing progress meter and response data.

If you want a progress meter for HTTP POST or PUT requests, you need to
redirect the response output to a file, using shell redirect (>), \fI\-o, \-\-output\fP or
similar.

It is not the same case for FTP upload as that operation does not spit out
any response data to the terminal.

If you prefer a progress "bar" instead of the regular meter, \fI\-#, \-\-progress-bar\fP is
your friend. You can also disable the progress meter completely with the
\fI\-s, \-\-silent\fP option.
.SH OPTIONS
Options start with one or two dashes. Many of the options require an
additional value next to them.

The short "single-dash" form of the options, \-d for example, may be used with
or without a space between it and its value, although a space is a recommended
separator. The long "double-dash" form, \fI\-d, \-\-data\fP for example, requires a space
between it and its value.

Short version options that don't need any additional values can be used
immediately next to each other, like for example you can specify all the
options \-O, \-L and \-v at once as \-OLv.

In general, all boolean options are enabled with \-\-\fBoption\fP and yet again
disabled with \-\-\fBno-\fPoption. That is, you use the exact same option name
but prefix it with "no-". However, in this list we mostly only list and show
the \-\-option version of them. (This concept with \-\-no options was added in
7.19.0. Previously most options were toggled on/off on repeated use of the
same command line option.)
.IP "\-\-abstract-unix-socket <path>"
(HTTP) Connect through an abstract Unix domain socket, instead of using the network.
Note: netstat shows the path of an abstract socket prefixed with '@', however
the <path> argument should not have this leading character.

Added in 7.53.0.
.IP "\-\-alt-svc <file name>"
(HTTPS) WARNING: this option is experimental. Do not use in production.

This option enables the alt-svc parser in curl. If the file name points to an
existing alt-svc cache file, that will be used. After a completed transfer,
the cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle the cache in memory.

If this option is used several times, curl will load contents from all the
files but the last one will be used for saving.

Added in 7.64.1.
.IP "\-\-anyauth"
(HTTP) Tells curl to figure out authentication method by itself, and use the most
secure one the remote site claims to support. This is done by first doing a
request and checking the response-headers, thus possibly inducing an extra
network round-trip. This is used instead of setting a specific authentication
method, which you can do with \fI\-\-basic\fP, \fI\-\-digest\fP, \fI\-\-ntlm\fP, and \fI\-\-negotiate\fP.

Using \fI\-\-anyauth\fP is not recommended if you do uploads from stdin, since it may
require data to be sent twice and then the client must be able to rewind. If
the need should arise when uploading from stdin, the upload operation will
fail.

Used together with \fI\-u, \-\-user\fP.

See also \fI--proxy-anyauth\fP, \fI--basic\fP and \fI--digest\fP.
.IP "\-a, \-\-append"
(FTP SFTP) When used in an upload, this makes curl append to the target file instead of
overwriting it. If the remote file doesn't exist, it will be created.  Note
that this flag is ignored by some SFTP servers (including OpenSSH).
.IP "\-\-aws-sigv4 <provider1[:provider2[:region[:service]]]>"
Use AWS V4 signature authentication in the transfer.

The provider argument is a string that is used by the algorithm when creating
outgoing authentication headers.

The region argument is a string that points to a geographic area of
a resources collection (region-code) when the region name is omitted from
the endpoint.

The service argument is a string that points to a function provided by a cloud
(service-code) when the service name is omitted from the endpoint.

Added in 7.75.0.
.IP "\-\-basic"
(HTTP) Tells curl to use HTTP Basic authentication with the remote host. This is the
default and this option is usually pointless, unless you use it to override a
previously set option that sets a different authentication method (such as
\fI\-\-ntlm\fP, \fI\-\-digest\fP, or \fI\-\-negotiate\fP).

Used together with \fI\-u, \-\-user\fP.

See also \fI--proxy-basic\fP.
.IP "\-\-cacert <file>"
(TLS) Tells curl to use the specified certificate file to verify the peer. The file
may contain multiple CA certificates. The certificate(s) must be in PEM
format. Normally curl is built to use a default file for this, so this option
is typically used to alter that default file.

curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is
set, and uses the given path as a path to a CA cert bundle. This option
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352

(Schannel only) This option is supported for Schannel in Windows 7 or later with
libcurl 7.60 or later. This option is supported for backward compatibility
with other SSL engines; instead it is recommended to use Windows' store of
root certificates (the default for Schannel).

If this option is used several times, the last one will be used.
.IP "--capath <dir>"
(TLS) Tells curl to use the specified certificate directory to verify the
peer. Multiple paths can be provided by separating them with ":" (e.g.
\&"path1:path2:path3"). The certificates must be in PEM format, and if curl is
built against OpenSSL, the directory must have been processed using the
c_rehash utility supplied with OpenSSL. Using \fI--capath\fP can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
\fI--cacert\fP if the --cacert file contains many CA certificates.

If this option is set, the default capath value will be ignored, and if it is
used several times, the last one will be used.
.IP "--cert-status"
(TLS) Tells curl to verify the status of the server certificate by using the
Certificate Status Request (aka. OCSP stapling) TLS extension.

If this option is enabled and the server sends an invalid (e.g. expired)
response, if the response suggests that the server certificate has been revoked,
or no response at all is received, the verification fails.

This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.

Added in 7.41.0.
.IP "--cert-type <type>"
(TLS) Tells curl what type the provided client certificate is using. PEM, DER, ENG
and P12 are recognized types.  If not specified, PEM is assumed.

If this option is used several times, the last one will be used.

See also \fI-E, --cert\fP, \fI--key\fP and \fI--key-type\fP.
.IP "-E, --cert <certificate[:password]>"
(TLS) Tells curl to use the specified client certificate file when getting a file
with HTTPS, FTPS or another SSL-based protocol. The certificate must be in
PKCS#12 format if using Secure Transport, or PEM format if using any other
engine.  If the optional password isn't specified, it will be queried for on
the terminal. Note that this option assumes a \&"certificate" file that is the
private key and the client certificate concatenated! See \fI-E, --cert\fP and \fI--key\fP to
specify them independently.

If curl is built against the NSS SSL library then this option can tell
curl the nickname of the certificate to use within the NSS database defined
by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the
NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be
loaded. If you want to use a file from the current directory, please precede
it with "./" prefix, in order to avoid confusion with a nickname.  If the
nickname contains ":", it needs to be preceded by "\\" so that it is not
recognized as password delimiter.  If the nickname contains "\\", it needs to
be escaped as "\\\\" so that it is not recognized as an escape character.

If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in
a PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI--engine\fP option will be set
as "pkcs11" if none was provided and the \fI--cert-type\fP option will be set as
"ENG" if none was provided.

(iOS and macOS only) If curl is built against Secure Transport, then the
certificate string can either be the name of a certificate/private key in the
system or user keychain, or the path to a PKCS#12-encoded certificate and
private key. If you want to use a file from the current directory, please
precede it with "./" prefix, in order to avoid confusion with a nickname.







|




|

|



|










|






|





|















|
|







286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352

(Schannel only) This option is supported for Schannel in Windows 7 or later with
libcurl 7.60 or later. This option is supported for backward compatibility
with other SSL engines; instead it is recommended to use Windows' store of
root certificates (the default for Schannel).

If this option is used several times, the last one will be used.
.IP "\-\-capath <dir>"
(TLS) Tells curl to use the specified certificate directory to verify the
peer. Multiple paths can be provided by separating them with ":" (e.g.
\&"path1:path2:path3"). The certificates must be in PEM format, and if curl is
built against OpenSSL, the directory must have been processed using the
c_rehash utility supplied with OpenSSL. Using \fI\-\-capath\fP can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
\fI\-\-cacert\fP if the \-\-cacert file contains many CA certificates.

If this option is set, the default capath value will be ignored, and if it is
used several times, the last one will be used.
.IP "\-\-cert-status"
(TLS) Tells curl to verify the status of the server certificate by using the
Certificate Status Request (aka. OCSP stapling) TLS extension.

If this option is enabled and the server sends an invalid (e.g. expired)
response, if the response suggests that the server certificate has been revoked,
or no response at all is received, the verification fails.

This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.

Added in 7.41.0.
.IP "\-\-cert-type <type>"
(TLS) Tells curl what type the provided client certificate is using. PEM, DER, ENG
and P12 are recognized types.  If not specified, PEM is assumed.

If this option is used several times, the last one will be used.

See also \fI-E, --cert\fP, \fI--key\fP and \fI--key-type\fP.
.IP "\-E, \-\-cert <certificate[:password]>"
(TLS) Tells curl to use the specified client certificate file when getting a file
with HTTPS, FTPS or another SSL-based protocol. The certificate must be in
PKCS#12 format if using Secure Transport, or PEM format if using any other
engine.  If the optional password isn't specified, it will be queried for on
the terminal. Note that this option assumes a \&"certificate" file that is the
private key and the client certificate concatenated! See \fI\-E, \-\-cert\fP and \fI\-\-key\fP to
specify them independently.

If curl is built against the NSS SSL library then this option can tell
curl the nickname of the certificate to use within the NSS database defined
by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the
NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be
loaded. If you want to use a file from the current directory, please precede
it with "./" prefix, in order to avoid confusion with a nickname.  If the
nickname contains ":", it needs to be preceded by "\\" so that it is not
recognized as password delimiter.  If the nickname contains "\\", it needs to
be escaped as "\\\\" so that it is not recognized as an escape character.

If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in
a PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP option will be set
as "pkcs11" if none was provided and the \fI\-\-cert-type\fP option will be set as
"ENG" if none was provided.

(iOS and macOS only) If curl is built against Secure Transport, then the
certificate string can either be the name of a certificate/private key in the
system or user keychain, or the path to a PKCS#12-encoded certificate and
private key. If you want to use a file from the current directory, please
precede it with "./" prefix, in order to avoid confusion with a nickname.
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
store locations are supported: CurrentUser, LocalMachine, CurrentService,
Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
LocalMachineEnterprise.

If this option is used several times, the last one will be used.

See also \fI--cert-type\fP, \fI--key\fP and \fI--key-type\fP.
.IP "--ciphers <list of ciphers>"
(TLS) Specifies which ciphers to use in the connection. The list of ciphers must
specify valid ciphers. Read up on SSL cipher list details on this URL:

 https://curl.se/docs/ssl-ciphers.html

If this option is used several times, the last one will be used.
.IP "--compressed-ssh"
(SCP SFTP) Enables built-in SSH compression.
This is a request, not an order; the server may or may not do it.

Added in 7.56.0.
.IP "--compressed"
(HTTP) Request a compressed response using one of the algorithms curl supports, and
automatically decompress the content. Headers are not modified.

If this option is used and the server sends an unsupported encoding, curl will
report an error.
.IP "-K, --config <file>"

Specify a text file to read curl arguments from. The command line arguments
found in the text file will be used as if they were provided on the command
line.

Options and their parameters must be specified on the same line in the file,
separated by whitespace, colon, or the equals sign. Long option names can
optionally be given in the config file without the initial double dashes and
if so, the colon or equals characters can be used as separators. If the option
is specified with one or two dashes, there can be no colon or equals character
between the option and its parameter.

If the parameter contains whitespace (or starts with : or =), the parameter
must be enclosed within quotes. Within double quotes, the following escape
sequences are available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash
preceding any other letter is ignored. If the first column of a config line is
a '#' character, the rest of the line will be treated as a comment. Only write
one option per physical line in the config file.

Specify the filename to \fI-K, --config\fP as '-' to make curl read the file from stdin.

Note that to be able to specify a URL in the config file, you need to specify
it using the \fI--url\fP option, and not by simply writing the URL on its own
line. So, it could look similar to this:

url = "https://curl.se/docs/"

When curl is invoked, it (unless \fI-q, --disable\fP is used) checks for a default
config file and uses it if found. The default config file is checked for in
the following places in this order:

1) Use the CURL_HOME environment variable if set

2) Use the XDG_CONFIG_HOME environment variable if set (Added in 7.73.0)

3) Use the HOME environment variable if set

4) Non-windows: use getpwuid to find the home directory

5) Windows: use APPDATA if set

6) Windows: use "USERPROFILE\Application Data" if set

7) On windows, if there is no .curlrc file in the home dir, it checks for one
in the same dir the curl executable is placed. On Unix-like systems, it will
simply try to load .curlrc from the determined home dir.

.nf
# --- Example file ---
# this is a comment
url = "example.com"
output = "curlhere.html"
user-agent = "superagent/1.0"

# and fetch another URL too
url = "example.com/docs/manpage.html"
-O
referer = "http://nowhereatall.example.com/"
# --- End of example file ---
.fi

This option can be used multiple times to load multiple config files.
.IP "--connect-timeout <seconds>"
Maximum time in seconds that you allow curl's connection to take.  This only
limits the connection phase, so if curl connects within the given period it
will continue - if not it will exit.  Since version 7.32.0, this option
accepts decimal values.

If this option is used several times, the last one will be used.

See also \fI-m, --max-time\fP.
.IP "--connect-to <HOST1:PORT1:HOST2:PORT2>"

For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead.
This option is suitable to direct requests at a specific server, e.g. at a
specific cluster node in a cluster of servers. This option is only used to
establish the network connection. It does NOT affect the hostname/port that is
used for TLS/SSL (e.g. SNI, certificate verification) or for the application
protocols. "HOST1" and "PORT1" may be the empty string, meaning "any
host/port". "HOST2" and "PORT2" may also be the empty string, meaning "use the
request's original host/port".

A "host" specified to this option is compared as a string, so it needs to
match the name used in request URL. It can be either numerical such as
"127.0.0.1" or the full host name such as "example.org".

This option can be used many times to add many connect rules.

See also \fI--resolve\fP and \fI-H, --header\fP. Added in 7.49.0.
.IP "-C, --continue-at <offset>"
Continue/Resume a previous file transfer at the given offset. The given offset
is the exact number of bytes that will be skipped, counting from the beginning
of the source file before it is transferred to the destination.  If used with
uploads, the FTP server command SIZE will not be used by curl.

Use "-C -" to tell curl to automatically find out where/how to resume the
transfer. It then uses the given output/input files to figure that out.

If this option is used several times, the last one will be used.

See also \fI-r, --range\fP.
.IP "-c, --cookie-jar <filename>"
(HTTP) Specify to which file you want curl to write all cookies after a completed
operation. Curl writes all cookies from its in-memory cookie storage to the
given file at the end of operations. If no cookies are known, no data will be
written. The file will be written using the Netscape cookie file format. If
you set the file name to a single dash, "-", the cookies will be written to
stdout.

This command line option will activate the cookie engine that makes curl
record and use cookies. Another way to activate it is to use the \fI-b, --cookie\fP
option.

If the cookie jar can't be created or written to, the whole curl operation
won't fail or even report an error clearly. Using \fI-v, --verbose\fP will get a warning
displayed, but that is the only visible feedback you get about this possibly
lethal situation.

If this option is used several times, the last specified file name will be
used.
.IP "-b, --cookie <data|filename>"
(HTTP) Pass the data to the HTTP server in the Cookie header. It is supposedly
the data previously received from the server in a "Set-Cookie:" line.  The
data should be in the format "NAME1=VALUE1; NAME2=VALUE2".

If no '=' symbol is used in the argument, it is instead treated as a filename
to read previously stored cookie from. This option also activates the cookie
engine which will make curl record incoming cookies, which may be handy if
you're using this in combination with the \fI-L, --location\fP option or do multiple URL
transfers on the same invoke. If the file name is exactly a minus ("-"), curl
will instead read the contents from stdin.

The file format of the file to read cookies from should be plain HTTP headers
(Set-Cookie style) or the Netscape/Mozilla cookie file format.

The file specified with \fI-b, --cookie\fP is only used as input. No cookies will be
written to the file. To store cookies, use the \fI-c, --cookie-jar\fP option.

Exercise caution if you are using this option and multiple transfers may
occur.  If you use the NAME1=VALUE1; format, or in a file use the Set-Cookie
format and don't specify a domain, then the cookie is sent for any domain
(even after redirects are followed) and cannot be modified by a server-set
cookie. If the cookie engine is enabled and a server sets a cookie of the same
name then both will be sent on a future transfer to that server, likely not
what you intended.  To address these issues set a domain in Set-Cookie (doing
that will include sub domains) or use the Netscape format.

If this option is used several times, the last one will be used.

Users very often want to both read cookies from a file and write updated
cookies back to a file, so using both \fI-b, --cookie\fP and \fI-c, --cookie-jar\fP in the same
command line is common.
.IP "--create-dirs"
When used in conjunction with the \fI-o, --output\fP option, curl will create the
necessary local directory hierarchy as needed. This option creates the dirs
mentioned with the \fI-o, --output\fP option, nothing else. If the --output file name
uses no dir or if the dirs it mentions already exist, no dir will be created.

Created dirs are made with mode 0750 on unix style file systems.

To create remote directories when using FTP or SFTP, try \fI--ftp-create-dirs\fP.
.IP "--create-file-mode"
(SFTP SCP FILE) When curl is used to create files remotely using one of the supported
protocols, this option allows the user to set which 'mode' to set on the file
at creation time, instead of the default 0644.

This options takes an octal number as argument.

See also \fI--ftp-create-dirs\fP. Added in 7.75.0.
.IP "--crlf"
(FTP SMTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).

(SMTP added in 7.40.0)
.IP "--crlfile <file>"
(TLS) Provide a file using PEM format with a Certificate Revocation List that may
specify peer certificates that are to be considered revoked.

If this option is used several times, the last one will be used.

Added in 7.19.7.
.IP "--curves <algorithm list>"
(TLS) Tells curl to request specific curves to use during SSL session establishment
according to RFC 8422, 5.1.  Multiple algorithms can be provided by separating
them with ":" (e.g.  "X25519:P-521").  The parameter is available identically
in the "openssl s_client/s_server" utilities.

\fI--curves\fP allows a OpenSSL powered curl to make SSL-connections with exactly
the (EC) curve requested by the client, avoiding intransparent client/server
negotiations.

If this option is set, the default curves list built into openssl will be
ignored.

Added in 7.73.0.
.IP "--data-ascii <data>"
(HTTP) This is just an alias for \fI-d, --data\fP.
.IP "--data-binary <data>"
(HTTP) This posts data exactly as specified with no extra processing whatsoever.

If you start the data with the letter @, the rest should be a filename.  Data
is posted in a similar manner as \fI-d, --data\fP does, except that newlines and
carriage returns are preserved and conversions are never done.

Like \fI-d, --data\fP the default content-type sent to the server is
application/x-www-form-urlencoded. If you want the data to be treated as
arbitrary binary data by the server then set the content-type to octet-stream:
-H "Content-Type: application/octet-stream".

If this option is used several times, the ones following the first will append
data as described in \fI-d, --data\fP.
.IP "--data-raw <data>"
(HTTP) This posts data similarly to \fI-d, --data\fP but without the special
interpretation of the @ character.

See also \fI-d, --data\fP. Added in 7.43.0.
.IP "--data-urlencode <data>"
(HTTP) This posts data, similar to the other \fI-d, --data\fP options with the exception
that this performs URL-encoding.

To be CGI-compliant, the <data> part should begin with a \fIname\fP followed
by a separator and a content specification. The <data> part can be passed to
curl using one of the following syntaxes:
.RS
.IP "content"







|






|




|





|



















|


|




|




















|







|

|



|


|





|

















|





|





|








|



|





|







|






|
|










|


|

|
|

|




|
|




|


|



|






|





|







|
|
|



|


|


|


|
|
|



|
|







361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
store locations are supported: CurrentUser, LocalMachine, CurrentService,
Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
LocalMachineEnterprise.

If this option is used several times, the last one will be used.

See also \fI--cert-type\fP, \fI--key\fP and \fI--key-type\fP.
.IP "\-\-ciphers <list of ciphers>"
(TLS) Specifies which ciphers to use in the connection. The list of ciphers must
specify valid ciphers. Read up on SSL cipher list details on this URL:

 https://curl.se/docs/ssl-ciphers.html

If this option is used several times, the last one will be used.
.IP "\-\-compressed-ssh"
(SCP SFTP) Enables built-in SSH compression.
This is a request, not an order; the server may or may not do it.

Added in 7.56.0.
.IP "\-\-compressed"
(HTTP) Request a compressed response using one of the algorithms curl supports, and
automatically decompress the content. Headers are not modified.

If this option is used and the server sends an unsupported encoding, curl will
report an error.
.IP "\-K, \-\-config <file>"

Specify a text file to read curl arguments from. The command line arguments
found in the text file will be used as if they were provided on the command
line.

Options and their parameters must be specified on the same line in the file,
separated by whitespace, colon, or the equals sign. Long option names can
optionally be given in the config file without the initial double dashes and
if so, the colon or equals characters can be used as separators. If the option
is specified with one or two dashes, there can be no colon or equals character
between the option and its parameter.

If the parameter contains whitespace (or starts with : or =), the parameter
must be enclosed within quotes. Within double quotes, the following escape
sequences are available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash
preceding any other letter is ignored. If the first column of a config line is
a '#' character, the rest of the line will be treated as a comment. Only write
one option per physical line in the config file.

Specify the filename to \fI\-K, \-\-config\fP as '-' to make curl read the file from stdin.

Note that to be able to specify a URL in the config file, you need to specify
it using the \fI\-\-url\fP option, and not by simply writing the URL on its own
line. So, it could look similar to this:

url = "https://curl.se/docs/"

When curl is invoked, it (unless \fI\-q, \-\-disable\fP is used) checks for a default
config file and uses it if found. The default config file is checked for in
the following places in this order:

1) Use the CURL_HOME environment variable if set

2) Use the XDG_CONFIG_HOME environment variable if set (Added in 7.73.0)

3) Use the HOME environment variable if set

4) Non-windows: use getpwuid to find the home directory

5) Windows: use APPDATA if set

6) Windows: use "USERPROFILE\Application Data" if set

7) On windows, if there is no .curlrc file in the home dir, it checks for one
in the same dir the curl executable is placed. On Unix-like systems, it will
simply try to load .curlrc from the determined home dir.

.nf
# \-\-\- Example file \-\-\-
# this is a comment
url = "example.com"
output = "curlhere.html"
user-agent = "superagent/1.0"

# and fetch another URL too
url = "example.com/docs/manpage.html"
\-O
referer = "http://nowhereatall.example.com/"
# \-\-\- End of example file \-\-\-
.fi

This option can be used multiple times to load multiple config files.
.IP "\-\-connect-timeout <seconds>"
Maximum time in seconds that you allow curl's connection to take.  This only
limits the connection phase, so if curl connects within the given period it
will continue \- if not it will exit.  Since version 7.32.0, this option
accepts decimal values.

If this option is used several times, the last one will be used.

See also \fI-m, --max-time\fP.
.IP "\-\-connect-to <HOST1:PORT1:HOST2:PORT2>"

For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead.
This option is suitable to direct requests at a specific server, e.g. at a
specific cluster node in a cluster of servers. This option is only used to
establish the network connection. It does NOT affect the hostname/port that is
used for TLS/SSL (e.g. SNI, certificate verification) or for the application
protocols. "HOST1" and "PORT1" may be the empty string, meaning "any
host/port". "HOST2" and "PORT2" may also be the empty string, meaning "use the
request's original host/port".

A "host" specified to this option is compared as a string, so it needs to
match the name used in request URL. It can be either numerical such as
"127.0.0.1" or the full host name such as "example.org".

This option can be used many times to add many connect rules.

See also \fI--resolve\fP and \fI-H, --header\fP. Added in 7.49.0.
.IP "\-C, \-\-continue-at <offset>"
Continue/Resume a previous file transfer at the given offset. The given offset
is the exact number of bytes that will be skipped, counting from the beginning
of the source file before it is transferred to the destination.  If used with
uploads, the FTP server command SIZE will not be used by curl.

Use "-C \-" to tell curl to automatically find out where/how to resume the
transfer. It then uses the given output/input files to figure that out.

If this option is used several times, the last one will be used.

See also \fI-r, --range\fP.
.IP "\-c, \-\-cookie-jar <filename>"
(HTTP) Specify to which file you want curl to write all cookies after a completed
operation. Curl writes all cookies from its in-memory cookie storage to the
given file at the end of operations. If no cookies are known, no data will be
written. The file will be written using the Netscape cookie file format. If
you set the file name to a single dash, "-", the cookies will be written to
stdout.

This command line option will activate the cookie engine that makes curl
record and use cookies. Another way to activate it is to use the \fI\-b, \-\-cookie\fP
option.

If the cookie jar can't be created or written to, the whole curl operation
won't fail or even report an error clearly. Using \fI\-v, \-\-verbose\fP will get a warning
displayed, but that is the only visible feedback you get about this possibly
lethal situation.

If this option is used several times, the last specified file name will be
used.
.IP "\-b, \-\-cookie <data|filename>"
(HTTP) Pass the data to the HTTP server in the Cookie header. It is supposedly
the data previously received from the server in a "Set-Cookie:" line.  The
data should be in the format "NAME1=VALUE1; NAME2=VALUE2".

If no '=' symbol is used in the argument, it is instead treated as a filename
to read previously stored cookie from. This option also activates the cookie
engine which will make curl record incoming cookies, which may be handy if
you're using this in combination with the \fI\-L, \-\-location\fP option or do multiple URL
transfers on the same invoke. If the file name is exactly a minus ("-"), curl
will instead read the contents from stdin.

The file format of the file to read cookies from should be plain HTTP headers
(Set-Cookie style) or the Netscape/Mozilla cookie file format.

The file specified with \fI\-b, \-\-cookie\fP is only used as input. No cookies will be
written to the file. To store cookies, use the \fI\-c, \-\-cookie-jar\fP option.

Exercise caution if you are using this option and multiple transfers may
occur.  If you use the NAME1=VALUE1; format, or in a file use the Set-Cookie
format and don't specify a domain, then the cookie is sent for any domain
(even after redirects are followed) and cannot be modified by a server-set
cookie. If the cookie engine is enabled and a server sets a cookie of the same
name then both will be sent on a future transfer to that server, likely not
what you intended.  To address these issues set a domain in Set-Cookie (doing
that will include sub domains) or use the Netscape format.

This option can be used multiple times.

Users very often want to both read cookies from a file and write updated
cookies back to a file, so using both \fI\-b, \-\-cookie\fP and \fI\-c, \-\-cookie-jar\fP in the same
command line is common.
.IP "\-\-create-dirs"
When used in conjunction with the \fI\-o, \-\-output\fP option, curl will create the
necessary local directory hierarchy as needed. This option creates the dirs
mentioned with the \fI\-o, \-\-output\fP option, nothing else. If the \-\-output file name
uses no dir or if the dirs it mentions already exist, no dir will be created.

Created dirs are made with mode 0750 on unix style file systems.

To create remote directories when using FTP or SFTP, try \fI\-\-ftp-create-dirs\fP.
.IP "\-\-create-file-mode <mode>"
(SFTP SCP FILE) When curl is used to create files remotely using one of the supported
protocols, this option allows the user to set which 'mode' to set on the file
at creation time, instead of the default 0644.

This option takes an octal number as argument.

See also \fI--ftp-create-dirs\fP. Added in 7.75.0.
.IP "\-\-crlf"
(FTP SMTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).

(SMTP added in 7.40.0)
.IP "\-\-crlfile <file>"
(TLS) Provide a file using PEM format with a Certificate Revocation List that may
specify peer certificates that are to be considered revoked.

If this option is used several times, the last one will be used.

Added in 7.19.7.
.IP "\-\-curves <algorithm list>"
(TLS) Tells curl to request specific curves to use during SSL session establishment
according to RFC 8422, 5.1.  Multiple algorithms can be provided by separating
them with ":" (e.g.  "X25519:P-521").  The parameter is available identically
in the "openssl s_client/s_server" utilities.

\fI\-\-curves\fP allows a OpenSSL powered curl to make SSL-connections with exactly
the (EC) curve requested by the client, avoiding intransparent client/server
negotiations.

If this option is set, the default curves list built into openssl will be
ignored.

Added in 7.73.0.
.IP "\-\-data-ascii <data>"
(HTTP) This is just an alias for \fI\-d, \-\-data\fP.
.IP "\-\-data-binary <data>"
(HTTP) This posts data exactly as specified with no extra processing whatsoever.

If you start the data with the letter @, the rest should be a filename.  Data
is posted in a similar manner as \fI\-d, \-\-data\fP does, except that newlines and
carriage returns are preserved and conversions are never done.

Like \fI\-d, \-\-data\fP the default content-type sent to the server is
application/x-www-form-urlencoded. If you want the data to be treated as
arbitrary binary data by the server then set the content-type to octet-stream:
\-H "Content-Type: application/octet-stream".

If this option is used several times, the ones following the first will append
data as described in \fI\-d, \-\-data\fP.
.IP "\-\-data-raw <data>"
(HTTP) This posts data similarly to \fI\-d, \-\-data\fP but without the special
interpretation of the @ character.

See also \fI-d, --data\fP. Added in 7.43.0.
.IP "\-\-data-urlencode <data>"
(HTTP) This posts data, similar to the other \fI\-d, \-\-data\fP options with the exception
that this performs URL-encoding.

To be CGI-compliant, the <data> part should begin with a \fIname\fP followed
by a separator and a content specification. The <data> part can be passed to
curl using one of the following syntaxes:
.RS
.IP "content"
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736








737
738
739





740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823











824

825
826
827
828
829
830
831
832
833


834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
This will make curl load data from the given file (including any newlines),
URL-encode that data and pass it on in the POST. The name part gets an equal
sign appended, resulting in \fIname=urlencoded-file-content\fP. Note that the
name is expected to be URL-encoded already.
.RE

See also \fI-d, --data\fP and \fI--data-raw\fP. Added in 7.18.0.
.IP "-d, --data <data>"
(HTTP MQTT) Sends the specified data in a POST request to the HTTP server, in the same way
that a browser does when a user has filled in an HTML form and presses the
submit button. This will cause curl to pass the data to the server using the
content-type application/x-www-form-urlencoded.  Compare to \fI-F, --form\fP.

\fI--data-raw\fP is almost the same but does not have a special interpretation of
the @ character. To post data purely binary, you should instead use the
\fI--data-binary\fP option.  To URL-encode the value of a form field you may use
\fI--data-urlencode\fP.

If any of these options is used more than once on the same command line, the
data pieces specified will be merged together with a separating
&-symbol. Thus, using '-d name=daniel -d skill=lousy' would generate a post
chunk that looks like \&'name=daniel&skill=lousy'.

If you start the data with the letter @, the rest should be a file name to
read the data from, or - if you want curl to read the data from stdin. Posting
data from a file named \&'foobar' would thus be done with \fI-d, --data\fP @foobar. When
\fI-d, --data\fP is told to read from a file like that, carriage returns and newlines
will be stripped out. If you don't want the @ character to have a special
interpretation use \fI--data-raw\fP instead.

See also \fI--data-binary\fP, \fI--data-urlencode\fP and \fI--data-raw\fP. This option overrides \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
.IP "--delegation <LEVEL>"
(GSS/kerberos) Set LEVEL to tell the server what it is allowed to delegate when it
comes to user credentials.
.RS
.IP "none"
Don't allow any delegation.
.IP "policy"
Delegates if and only if the OK-AS-DELEGATE flag is set in the Kerberos
service ticket, which is a matter of realm policy.
.IP "always"
Unconditionally allow the server to delegate.
.RE
.IP "--digest"
(HTTP) Enables HTTP Digest authentication. This is an authentication scheme that
prevents the password from being sent over the wire in clear text. Use this in
combination with the normal \fI-u, --user\fP option to set user name and password.

If this option is used several times, only the first one is used.

See also \fI-u, --user\fP, \fI--proxy-digest\fP and \fI--anyauth\fP. This option overrides \fI--basic\fP and \fI--ntlm\fP and \fI--negotiate\fP.
.IP "--disable-eprt"
(FTP) Tell curl to disable the use of the EPRT and LPRT commands when doing active
FTP transfers. Curl will normally always first attempt to use EPRT, then LPRT
before using PORT, but with this option, it will use PORT right away. EPRT and
LPRT are extensions to the original FTP protocol, and may not work on all
servers, but they enable more functionality in a better way than the
traditional PORT command.

--eprt can be used to explicitly enable EPRT again and --no-eprt is an alias
for \fI--disable-eprt\fP.

If the server is accessed using IPv6, this option will have no effect as EPRT
is necessary then.

Disabling EPRT only changes the active behavior. If you want to switch to
passive mode you need to not use \fI-P, --ftp-port\fP or force it with \fI--ftp-pasv\fP.
.IP "--disable-epsv"
(FTP) (FTP) Tell curl to disable the use of the EPSV command when doing passive FTP
transfers. Curl will normally always first attempt to use EPSV before PASV,
but with this option, it will not try using EPSV.

--epsv can be used to explicitly enable EPSV again and --no-epsv is an alias
for \fI--disable-epsv\fP.

If the server is an IPv6 host, this option will have no effect as EPSV is
necessary then.

Disabling EPSV only changes the passive behavior. If you want to switch to
active mode you need to use \fI-P, --ftp-port\fP.
.IP "-q, --disable"
If used as the first parameter on the command line, the \fIcurlrc\fP config
file will not be read and used. See the \fI-K, --config\fP for details on the default
config file search path.
.IP "--disallow-username-in-url"
(HTTP) This tells curl to exit if passed a url containing a username.

See also \fI--proto\fP. Added in 7.61.0.
.IP "--dns-interface <interface>"
(DNS) Tell curl to send outgoing DNS requests through <interface>. This option is a
counterpart to \fI--interface\fP (which does not affect DNS). The supplied string
must be an interface name (not an address).

See also \fI--dns-ipv4-addr\fP and \fI--dns-ipv6-addr\fP. \fI--dns-interface\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "--dns-ipv4-addr <address>"
(DNS) Tell curl to bind to <ip-address> when making IPv4 DNS requests, so that
the DNS requests originate from this address. The argument should be a
single IPv4 address.

See also \fI--dns-interface\fP and \fI--dns-ipv6-addr\fP. \fI--dns-ipv4-addr\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "--dns-ipv6-addr <address>"
(DNS) Tell curl to bind to <ip-address> when making IPv6 DNS requests, so that
the DNS requests originate from this address. The argument should be a
single IPv6 address.

See also \fI--dns-interface\fP and \fI--dns-ipv4-addr\fP. \fI--dns-ipv6-addr\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "--dns-servers <addresses>"
Set the list of DNS servers to be used instead of the system default.
The list of IP addresses should be separated with commas. Port numbers
may also optionally be given as \fI:<port-number>\fP after each IP
address.

\fI--dns-servers\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.








.IP "--doh-url <URL>"
(all) Specifies which DNS-over-HTTPS (DOH) server to use to resolve hostnames,
instead of using the default name resolver mechanism. The URL must be HTTPS.






If this option is used several times, the last one will be used.

Added in 7.62.0.
.IP "-D, --dump-header <filename>"
(HTTP FTP) Write the received protocol headers to the specified file.

This option is handy to use when you want to store the headers that an HTTP
site sends to you. Cookies from the headers could then be read in a second
curl invocation by using the \fI-b, --cookie\fP option! The \fI-c, --cookie-jar\fP option is a
better way to store cookies.

If no headers are received, the use of this option will create an empty file.

When used in FTP, the FTP server response lines are considered being "headers"
and thus are saved there.

If this option is used several times, the last one will be used.

See also \fI-o, --output\fP.
.IP "--egd-file <file>"
(TLS) Specify the path name to the Entropy Gathering Daemon socket. The socket is
used to seed the random engine for SSL connections.

See also \fI--random-file\fP.
.IP "--engine <name>"
(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \fI--engine\fP
list to print a list of build-time supported engines. Note that not all (or
none) of the engines may be available at run-time.
.IP "--etag-compare <file>"
(HTTP) This option makes a conditional HTTP request for the specific
ETag read from the given file by sending a custom If-None-Match
header using the extracted ETag.

For correct results, make sure that specified file contains only a single
line with a desired ETag. An empty file is parsed as an empty ETag.

Use the option \fI--etag-save\fP to first save the ETag from a response, and
then use this option to compare using the saved ETag in a subsequent request.

\fBCOMPARISON\fP: There are 2 types of comparison or ETags: Weak and Strong.
This option expects, and uses a strong comparison.

Added in 7.68.0.
.IP "--etag-save <file>"
(HTTP) This option saves an HTTP ETag to the specified file. Etag is
usually part of headers returned by a request. When server sends an
ETag, it must be enveloped by a double quote. This option extracts the
ETag without the double quotes and saves it into the <file>.

A server can send a weak ETag which is prefixed by "W/". This identifier
is not considered, and only relevant ETag between quotation marks is parsed.

It an ETag wasn't sent by the server or it cannot be parsed, an empty
file is created.

Added in 7.68.0.
.IP "--expect100-timeout <seconds>"
(HTTP) Maximum time in seconds that you allow curl to wait for a 100-continue
response when curl emits an Expects: 100-continue header in its request. By
default curl will wait one second. This option accepts decimal values! When
curl stops waiting, it will continue as if the response has been received.

See also \fI--connect-timeout\fP. Added in 7.47.0.
.IP "--fail-early"
Fail and exit on the first detected transfer error.

When curl is used to do multiple transfers on the command line, it will
attempt to operate on each given URL, one by one. By default, it will ignore
errors if there are more URLs given and the last URL's success will determine
the error code curl returns. So early failures will be "hidden" by subsequent
successful transfers.

Using this option, curl will instead return an error on the first transfer
that fails, independent of the amount of URLs that are given on the command
line. This way, no transfer failures go undetected by scripts and similar.

This option is global and does not need to be specified for each use of \fI-:, --next\fP.

This option does not imply \fI-f, --fail\fP, which causes transfers to fail due to the
server's HTTP status code. You can combine the two options, however note \fI-f, --fail\fP
is not global and is therefore contained by \fI-:, --next\fP.

Added in 7.52.0.











.IP "-f, --fail"

(HTTP) Fail silently (no output at all) on server errors. This is mostly done to
enable scripts etc to better deal with failed attempts. In normal cases
when an HTTP server fails to deliver a document, it returns an HTML document
stating so (which often also describes why and more). This flag will prevent
curl from outputting that and return error 22.

This method is not fail-safe and there are occasions where non-successful
response codes will slip through, especially when authentication is involved
(response codes 401 and 407).


.IP "--false-start"
(TLS) Tells curl to use false start during the TLS handshake. False start is a mode
where a TLS client will start sending application data before verifying the
server's Finished message, thus saving a round trip when performing a full
handshake.

This is currently only implemented in the NSS and Secure Transport (on iOS 7.0
or later, or OS X 10.9 or later) backends.

Added in 7.42.0.
.IP "--form-string <name=string>"
(HTTP SMTP IMAP) Similar to \fI-F, --form\fP except that the value string for the named parameter is used
literally. Leading \&'@' and \&'<' characters, and the \&';type=' string in
the value have no special meaning. Use this in preference to \fI-F, --form\fP if
there's any possibility that the string value may accidentally trigger the
\&'@' or \&'<' features of \fI-F, --form\fP.

See also \fI-F, --form\fP.
.IP "-F, --form <name=content>"
(HTTP SMTP IMAP) For HTTP protocol family, this lets curl emulate a filled-in form in which a
user has pressed the submit button. This causes curl to POST data using the
Content-Type multipart/form-data according to RFC 2388.

For SMTP and IMAP protocols, this is the mean to compose a multipart mail
message to transmit.

This enables uploading of binary files etc. To force the 'content' part to be
a file, prefix the file name with an @ sign. To just get the content part from
a file, prefix the file name with the symbol <. The difference between @ and <
is then that @ makes a file get attached in the post as a file upload, while
the < makes a text field and just get the contents for that text field from a
file.

Tell curl to read content from stdin instead of a file by using - as
filename. This goes for both @ and < constructs. When stdin is used, the
contents is buffered in memory first by curl to determine its size and allow a
possible resend.  Defining a part's data from a named non-regular file (such
as a named pipe or similar) is unfortunately not subject to buffering and will
be effectively read at transmission time; since the full size is unknown
before the transfer starts, such data is sent as chunks by HTTP and rejected
by IMAP.

Example: send an image to an HTTP server, where \&'profile' is the name of the
form-field to which the file portrait.jpg will be the input:

 curl -F profile=@portrait.jpg https://example.com/upload.cgi

Example: send your name and shoe size in two text fields to the server:

 curl -F name=John -F shoesize=11 https://example.com/

Example: send your essay in a text field to the server. Send it as a plain
text field, but get the contents for it from a local file:

 curl -F "story=<hugefile.txt" https://example.com/

You can also tell curl what Content-Type to use by using 'type=', in a manner
similar to:

 curl -F "web=@index.html;type=text/html" example.com

or

 curl -F "name=daniel;type=text/foo" example.com

You can also explicitly change the name field of a file upload part by setting
filename=, like this:

 curl -F "file=@localfile;filename=nameinpost" example.com

If filename/path contains ',' or ';', it must be quoted by double-quotes like:

 curl -F "file=@\\"localfile\\";filename=\\"nameinpost\\"" example.com

or

 curl -F 'file=@"localfile";filename="nameinpost"' example.com

Note that if a filename/path is quoted by double-quotes, any double-quote
or backslash within the filename must be escaped by backslash.

Quoting must also be applied to non-file data if it contains semicolons,
leading/trailing spaces or leading double quotes:

 curl -F 'colors="red; green; blue";type=text/x-myapp' example.com

You can add custom headers to the field by setting headers=, like

  curl -F "submit=OK;headers=\\"X-submit-type: OK\\"" example.com

or

  curl -F "submit=OK;headers=@headerfile" example.com

The headers= keyword may appear more that once and above notes about quoting
apply. When headers are read from a file, Empty lines and lines starting
with '#' are comments and ignored; each header can be folded by splitting
between two words and starting the continuation line with a space; embedded
carriage-returns and trailing spaces are stripped.
Here is an example of a header file contents:







|



|

|

|
|



|



|
|
|

|


|











|


|




|







|
|





|
|




|
|





|
|

|

|



|

|



|





|





|






>
>
>
>
>
>
>
>
|


>
>
>
>
>




|




|










|




|
|


|







|






|












|






|












|

|
|
|


>
>
>
>
>
>
>
>
>
>
>
|
>









>
>
|









|
|

|

|


|














|











|



|




|




|



|




|



|



|







|



|



|







624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
This will make curl load data from the given file (including any newlines),
URL-encode that data and pass it on in the POST. The name part gets an equal
sign appended, resulting in \fIname=urlencoded-file-content\fP. Note that the
name is expected to be URL-encoded already.
.RE

See also \fI-d, --data\fP and \fI--data-raw\fP. Added in 7.18.0.
.IP "\-d, \-\-data <data>"
(HTTP MQTT) Sends the specified data in a POST request to the HTTP server, in the same way
that a browser does when a user has filled in an HTML form and presses the
submit button. This will cause curl to pass the data to the server using the
content-type application/x-www-form-urlencoded.  Compare to \fI\-F, \-\-form\fP.

\fI\-\-data-raw\fP is almost the same but does not have a special interpretation of
the @ character. To post data purely binary, you should instead use the
\fI\-\-data-binary\fP option.  To URL-encode the value of a form field you may use
\fI\-\-data-urlencode\fP.

If any of these options is used more than once on the same command line, the
data pieces specified will be merged together with a separating
&-symbol. Thus, using '-d name=daniel \-d skill=lousy' would generate a post
chunk that looks like \&'name=daniel&skill=lousy'.

If you start the data with the letter @, the rest should be a file name to
read the data from, or \- if you want curl to read the data from stdin. Posting
data from a file named \&'foobar' would thus be done with \fI\-d, \-\-data\fP @foobar. When
\fI\-d, \-\-data\fP is told to read from a file like that, carriage returns and newlines
will be stripped out. If you don't want the @ character to have a special
interpretation use \fI\-\-data-raw\fP instead.

See also \fI--data-binary\fP, \fI--data-urlencode\fP and \fI--data-raw\fP. This option overrides \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
.IP "\-\-delegation <LEVEL>"
(GSS/kerberos) Set LEVEL to tell the server what it is allowed to delegate when it
comes to user credentials.
.RS
.IP "none"
Don't allow any delegation.
.IP "policy"
Delegates if and only if the OK-AS-DELEGATE flag is set in the Kerberos
service ticket, which is a matter of realm policy.
.IP "always"
Unconditionally allow the server to delegate.
.RE
.IP "\-\-digest"
(HTTP) Enables HTTP Digest authentication. This is an authentication scheme that
prevents the password from being sent over the wire in clear text. Use this in
combination with the normal \fI\-u, \-\-user\fP option to set user name and password.

If this option is used several times, only the first one is used.

See also \fI-u, --user\fP, \fI--proxy-digest\fP and \fI--anyauth\fP. This option overrides \fI--basic\fP and \fI--ntlm\fP and \fI--negotiate\fP.
.IP "\-\-disable-eprt"
(FTP) Tell curl to disable the use of the EPRT and LPRT commands when doing active
FTP transfers. Curl will normally always first attempt to use EPRT, then LPRT
before using PORT, but with this option, it will use PORT right away. EPRT and
LPRT are extensions to the original FTP protocol, and may not work on all
servers, but they enable more functionality in a better way than the
traditional PORT command.

\-\-eprt can be used to explicitly enable EPRT again and \-\-no-eprt is an alias
for \fI\-\-disable-eprt\fP.

If the server is accessed using IPv6, this option will have no effect as EPRT
is necessary then.

Disabling EPRT only changes the active behavior. If you want to switch to
passive mode you need to not use \fI\-P, \-\-ftp-port\fP or force it with \fI\-\-ftp-pasv\fP.
.IP "\-\-disable-epsv"
(FTP) (FTP) Tell curl to disable the use of the EPSV command when doing passive FTP
transfers. Curl will normally always first attempt to use EPSV before PASV,
but with this option, it will not try using EPSV.

\-\-epsv can be used to explicitly enable EPSV again and \-\-no-epsv is an alias
for \fI\-\-disable-epsv\fP.

If the server is an IPv6 host, this option will have no effect as EPSV is
necessary then.

Disabling EPSV only changes the passive behavior. If you want to switch to
active mode you need to use \fI\-P, \-\-ftp-port\fP.
.IP "\-q, \-\-disable"
If used as the first parameter on the command line, the \fIcurlrc\fP config
file will not be read and used. See the \fI\-K, \-\-config\fP for details on the default
config file search path.
.IP "\-\-disallow-username-in-url"
(HTTP) This tells curl to exit if passed a url containing a username.

See also \fI--proto\fP. Added in 7.61.0.
.IP "\-\-dns-interface <interface>"
(DNS) Tell curl to send outgoing DNS requests through <interface>. This option is a
counterpart to \fI\-\-interface\fP (which does not affect DNS). The supplied string
must be an interface name (not an address).

See also \fI--dns-ipv4-addr\fP and \fI--dns-ipv6-addr\fP. \fI--dns-interface\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "\-\-dns-ipv4-addr <address>"
(DNS) Tell curl to bind to <ip-address> when making IPv4 DNS requests, so that
the DNS requests originate from this address. The argument should be a
single IPv4 address.

See also \fI--dns-interface\fP and \fI--dns-ipv6-addr\fP. \fI--dns-ipv4-addr\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "\-\-dns-ipv6-addr <address>"
(DNS) Tell curl to bind to <ip-address> when making IPv6 DNS requests, so that
the DNS requests originate from this address. The argument should be a
single IPv6 address.

See also \fI--dns-interface\fP and \fI--dns-ipv4-addr\fP. \fI--dns-ipv6-addr\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "\-\-dns-servers <addresses>"
Set the list of DNS servers to be used instead of the system default.
The list of IP addresses should be separated with commas. Port numbers
may also optionally be given as \fI:<port-number>\fP after each IP
address.

\fI--dns-servers\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "\-\-doh-cert-status"
(all) Same as \fI\-\-cert-status\fP but used for DOH (DNS-over-HTTPS).

Added in 7.76.0.
.IP "\-\-doh-insecure"
(all) Same as \fI\-k, \-\-insecure\fP but used for DOH (DNS-over-HTTPS).

Added in 7.76.0.
.IP "\-\-doh-url <URL>"
(all) Specifies which DNS-over-HTTPS (DOH) server to use to resolve hostnames,
instead of using the default name resolver mechanism. The URL must be HTTPS.

Some SSL options that you set for your transfer will apply to DOH since the
name lookups take place over SSL. However, the certificate verification
settings are not inherited and can be controlled separately via
\fI\-\-doh-insecure\fP and \fI\-\-doh-cert-status\fP.

If this option is used several times, the last one will be used.

Added in 7.62.0.
.IP "\-D, \-\-dump-header <filename>"
(HTTP FTP) Write the received protocol headers to the specified file.

This option is handy to use when you want to store the headers that an HTTP
site sends to you. Cookies from the headers could then be read in a second
curl invocation by using the \fI\-b, \-\-cookie\fP option! The \fI\-c, \-\-cookie-jar\fP option is a
better way to store cookies.

If no headers are received, the use of this option will create an empty file.

When used in FTP, the FTP server response lines are considered being "headers"
and thus are saved there.

If this option is used several times, the last one will be used.

See also \fI-o, --output\fP.
.IP "\-\-egd-file <file>"
(TLS) Specify the path name to the Entropy Gathering Daemon socket. The socket is
used to seed the random engine for SSL connections.

See also \fI--random-file\fP.
.IP "\-\-engine <name>"
(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \fI\-\-engine\fP
list to print a list of build-time supported engines. Note that not all (or
none) of the engines may be available at run-time.
.IP "\-\-etag-compare <file>"
(HTTP) This option makes a conditional HTTP request for the specific
ETag read from the given file by sending a custom If-None-Match
header using the extracted ETag.

For correct results, make sure that specified file contains only a single
line with a desired ETag. An empty file is parsed as an empty ETag.

Use the option \fI\-\-etag-save\fP to first save the ETag from a response, and
then use this option to compare using the saved ETag in a subsequent request.

\fBCOMPARISON\fP: There are 2 types of comparison or ETags: Weak and Strong.
This option expects, and uses a strong comparison.

Added in 7.68.0.
.IP "\-\-etag-save <file>"
(HTTP) This option saves an HTTP ETag to the specified file. Etag is
usually part of headers returned by a request. When server sends an
ETag, it must be enveloped by a double quote. This option extracts the
ETag without the double quotes and saves it into the <file>.

A server can send a weak ETag which is prefixed by "W/". This identifier
is not considered, and only relevant ETag between quotation marks is parsed.

It an ETag wasn't sent by the server or it cannot be parsed, an empty
file is created.

Added in 7.68.0.
.IP "\-\-expect100-timeout <seconds>"
(HTTP) Maximum time in seconds that you allow curl to wait for a 100-continue
response when curl emits an Expects: 100-continue header in its request. By
default curl will wait one second. This option accepts decimal values! When
curl stops waiting, it will continue as if the response has been received.

See also \fI--connect-timeout\fP. Added in 7.47.0.
.IP "\-\-fail-early"
Fail and exit on the first detected transfer error.

When curl is used to do multiple transfers on the command line, it will
attempt to operate on each given URL, one by one. By default, it will ignore
errors if there are more URLs given and the last URL's success will determine
the error code curl returns. So early failures will be "hidden" by subsequent
successful transfers.

Using this option, curl will instead return an error on the first transfer
that fails, independent of the amount of URLs that are given on the command
line. This way, no transfer failures go undetected by scripts and similar.

This option is global and does not need to be specified for each use of \fI\-:, \-\-next\fP.

This option does not imply \fI\-f, \-\-fail\fP, which causes transfers to fail due to the
server's HTTP status code. You can combine the two options, however note \fI\-f, \-\-fail\fP
is not global and is therefore contained by \fI\-:, \-\-next\fP.

Added in 7.52.0.
.IP "\-\-fail-with-body"
(HTTP) 
Return an error on server errors where the HTTP response code is 400 or
greater). In normal cases when an HTTP server fails to deliver a document, it
returns an HTML document stating so (which often also describes why and
more). This flag will still allow curl to outputting and save that content but
also to return error 22.

This is an alternative option to \fI\-f, \-\-fail\fP which makes curl fail for the same
circumstances but without saving the content.

See also \fI-f, --fail\fP. Added in 7.76.0.
.IP "\-f, \-\-fail"
(HTTP) Fail silently (no output at all) on server errors. This is mostly done to
enable scripts etc to better deal with failed attempts. In normal cases
when an HTTP server fails to deliver a document, it returns an HTML document
stating so (which often also describes why and more). This flag will prevent
curl from outputting that and return error 22.

This method is not fail-safe and there are occasions where non-successful
response codes will slip through, especially when authentication is involved
(response codes 401 and 407).

See also \fI--fail-with-body\fP.
.IP "\-\-false-start"
(TLS) Tells curl to use false start during the TLS handshake. False start is a mode
where a TLS client will start sending application data before verifying the
server's Finished message, thus saving a round trip when performing a full
handshake.

This is currently only implemented in the NSS and Secure Transport (on iOS 7.0
or later, or OS X 10.9 or later) backends.

Added in 7.42.0.
.IP "\-\-form-string <name=string>"
(HTTP SMTP IMAP) Similar to \fI\-F, \-\-form\fP except that the value string for the named parameter is used
literally. Leading \&'@' and \&'<' characters, and the \&';type=' string in
the value have no special meaning. Use this in preference to \fI\-F, \-\-form\fP if
there's any possibility that the string value may accidentally trigger the
\&'@' or \&'<' features of \fI\-F, \-\-form\fP.

See also \fI-F, --form\fP.
.IP "\-F, \-\-form <name=content>"
(HTTP SMTP IMAP) For HTTP protocol family, this lets curl emulate a filled-in form in which a
user has pressed the submit button. This causes curl to POST data using the
Content-Type multipart/form-data according to RFC 2388.

For SMTP and IMAP protocols, this is the mean to compose a multipart mail
message to transmit.

This enables uploading of binary files etc. To force the 'content' part to be
a file, prefix the file name with an @ sign. To just get the content part from
a file, prefix the file name with the symbol <. The difference between @ and <
is then that @ makes a file get attached in the post as a file upload, while
the < makes a text field and just get the contents for that text field from a
file.

Tell curl to read content from stdin instead of a file by using \- as
filename. This goes for both @ and < constructs. When stdin is used, the
contents is buffered in memory first by curl to determine its size and allow a
possible resend.  Defining a part's data from a named non-regular file (such
as a named pipe or similar) is unfortunately not subject to buffering and will
be effectively read at transmission time; since the full size is unknown
before the transfer starts, such data is sent as chunks by HTTP and rejected
by IMAP.

Example: send an image to an HTTP server, where \&'profile' is the name of the
form-field to which the file portrait.jpg will be the input:

 curl \-F profile=@portrait.jpg https://example.com/upload.cgi

Example: send your name and shoe size in two text fields to the server:

 curl \-F name=John \-F shoesize=11 https://example.com/

Example: send your essay in a text field to the server. Send it as a plain
text field, but get the contents for it from a local file:

 curl \-F "story=<hugefile.txt" https://example.com/

You can also tell curl what Content-Type to use by using 'type=', in a manner
similar to:

 curl \-F "web=@index.html;type=text/html" example.com

or

 curl \-F "name=daniel;type=text/foo" example.com

You can also explicitly change the name field of a file upload part by setting
filename=, like this:

 curl \-F "file=@localfile;filename=nameinpost" example.com

If filename/path contains ',' or ';', it must be quoted by double-quotes like:

 curl \-F "file=@\\"localfile\\";filename=\\"nameinpost\\"" example.com

or

 curl \-F 'file=@"localfile";filename="nameinpost"' example.com

Note that if a filename/path is quoted by double-quotes, any double-quote
or backslash within the filename must be escaped by backslash.

Quoting must also be applied to non-file data if it contains semicolons,
leading/trailing spaces or leading double quotes:

 curl \-F 'colors="red; green; blue";type=text/x-myapp' example.com

You can add custom headers to the field by setting headers=, like

  curl \-F "submit=OK;headers=\\"X-submit-type: OK\\"" example.com

or

  curl \-F "submit=OK;headers=@headerfile" example.com

The headers= keyword may appear more that once and above notes about quoting
apply. When headers are read from a file, Empty lines and lines starting
with '#' are comments and ignored; each header can be folded by splitting
between two words and starting the continuation line with a space; embedded
carriage-returns and trailing spaces are stripped.
Here is an example of a header file contents:
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
  X-header-2: this is
.br
   another header


To support sending multipart mail messages, the syntax is extended as follows:
.br
- name can be omitted: the equal sign is the first character of the argument,
.br
- if data starts with '(', this signals to start a new multipart: it can be
followed by a content type specification.
.br
- a multipart can be terminated with a '=)' argument.

Example: the following command sends an SMTP mime e-mail consisting in an
inline part in two alternative formats: plain text and HTML. It attaches a
text file:

 curl -F '=(;type=multipart/alternative' \\
.br
         -F '=plain text message' \\
.br
         -F '= <body>HTML message</body>;type=text/html' \\
.br
      -F '=)' -F '=@textfile.txt' ...  smtp://example.com

Data can be encoded for transfer using encoder=. Available encodings are
\fIbinary\fP and \fI8bit\fP that do nothing else than adding the corresponding
Content-Transfer-Encoding header, \fI7bit\fP that only rejects 8-bit characters
with a transfer error, \fIquoted-printable\fP and \fIbase64\fP that encodes
data according to the corresponding schemes, limiting lines length to
76 characters.

Example: send multipart mail with a quoted-printable text message and a
base64 attached file:

 curl -F '=text message;encoder=quoted-printable' \\
.br
      -F '=@localfile;encoder=base64' ... smtp://example.com

See further examples and details in the MANUAL.

This option can be used multiple times.

This option overrides \fI-d, --data\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
.IP "--ftp-account <data>"
(FTP) When an FTP server asks for "account data" after user name and password has
been provided, this data is sent off using the ACCT command.

If this option is used several times, the last one will be used.

Added in 7.13.0.
.IP "--ftp-alternative-to-user <command>"
(FTP) If authenticating with the USER and PASS commands fails, send this command.
When connecting to Tumbleweed's Secure Transport server over FTPS using a
client certificate, using "SITE AUTH" will tell the server to retrieve the
username from the certificate.

Added in 7.15.5.
.IP "--ftp-create-dirs"
(FTP SFTP) When an FTP or SFTP URL/operation uses a path that doesn't currently exist on
the server, the standard behavior of curl is to fail. Using this option, curl
will instead attempt to create missing directories.

See also \fI--create-dirs\fP.
.IP "--ftp-method <method>"
(FTP) Control what method curl should use to reach a file on an FTP(S)
server. The method argument should be one of the following alternatives:
.RS
.IP multicwd
curl does a single CWD operation for each path part in the given URL. For deep
hierarchies this means very many commands. This is how RFC 1738 says it should
be done. This is the default but the slowest behavior.
.IP nocwd
curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full
path to the server for all these commands. This is the fastest behavior.
.IP singlecwd
curl does one CWD with the full target directory and then operates on the file
\&"normally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE

Added in 7.15.1.
.IP "--ftp-pasv"
(FTP) Use passive mode for the data connection. Passive is the internal default
behavior, but using this option can be used to override a previous \fI-P, --ftp-port\fP
option.

If this option is used several times, only the first one is used. Undoing an
enforced passive really isn't doable but you must then instead enforce the
correct \fI-P, --ftp-port\fP again.

Passive mode means that curl will try the EPSV command first and then PASV,
unless \fI--disable-epsv\fP is used.

See also \fI--disable-epsv\fP. Added in 7.11.0.
.IP "-P, --ftp-port <address>"
(FTP) Reverses the default initiator/listener roles when connecting with FTP. This
option makes curl use active mode. curl then tells the server to connect back
to the client's specified address and port, while passive mode asks the server
to setup an IP address and port for it to connect to. <address> should be one
of:
.RS
.IP interface
e.g. "eth0" to specify which interface's IP address you want to use (Unix only)
.IP "IP address"
e.g. "192.168.10.1" to specify the exact IP address
.IP "host name"
e.g. "my.host.domain" to specify the machine
.IP "-"
make curl pick the same IP address that is already used for the control
connection
.RE

If this option is used several times, the last one will be used. Disable the
use of PORT with \fI--ftp-pasv\fP. Disable the attempt to use the EPRT command
instead of PORT by using \fI--disable-eprt\fP. EPRT is really PORT++.

Since 7.19.5, you can append \&":[start]-[end]\&" to the right of the address,
to tell curl what TCP port range to use. That means you specify a port range,
from a lower to a higher number. A single number works as well, but do note
that it increases the risk of failure since the port may not be available.

See also \fI--ftp-pasv\fP and \fI--disable-eprt\fP.
.IP "--ftp-pret"
(FTP) Tell curl to send a PRET command before PASV (and EPSV). Certain FTP servers,
mainly drftpd, require this non-standard command for directory listings as
well as up and downloads in PASV mode.

Added in 7.20.0.
.IP "--ftp-skip-pasv-ip"
(FTP) Tell curl to not use the IP address the server suggests in its response
to curl's PASV command when curl connects the data connection. Instead curl
will re-use the same IP address it already uses for the control
connection.

Since curl 7.74.0 this option is enabled by default.

This option has no effect if PORT, EPRT or EPSV is used instead of PASV.

See also \fI--ftp-pasv\fP. Added in 7.14.2.
.IP "--ftp-ssl-ccc-mode <active/passive>"
(FTP) Sets the CCC mode. The passive mode will not initiate the shutdown, but
instead wait for the server to do it, and will not reply to the shutdown from
the server. The active mode initiates the shutdown and waits for a reply from
the server.

See also \fI--ftp-ssl-ccc\fP. Added in 7.16.2.
.IP "--ftp-ssl-ccc"
(FTP) Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after
authenticating. The rest of the control channel communication will be
unencrypted. This allows NAT routers to follow the FTP transaction. The
default mode is passive.

See also \fI--ssl\fP and \fI--ftp-ssl-ccc-mode\fP. Added in 7.16.1.
.IP "--ftp-ssl-control"
(FTP) Require SSL/TLS for the FTP login, clear for transfer.  Allows secure
authentication, but non-encrypted data transfers for efficiency.  Fails the
transfer if the server doesn't support SSL/TLS.

Added in 7.16.0.
.IP "-G, --get"
When used, this option will make all data specified with \fI-d, --data\fP, \fI--data-binary\fP
or \fI--data-urlencode\fP to be used in an HTTP GET request instead of the POST
request that otherwise would be used. The data will be appended to the URL
with a '?' separator.

If used in combination with \fI-I, --head\fP, the POST data will instead be appended to
the URL with a HEAD request.

If this option is used several times, only the first one is used. This is
because undoing a GET doesn't make sense, but you should then instead enforce
the alternative method you prefer.
.IP "-g, --globoff"
This option switches off the "URL globbing parser". When you set this option,
you can specify URLs that contain the letters {}[] without having them being
interpreted by curl itself. Note that these letters are not normal legal URL
contents but they should be encoded according to the URI standard.
.IP "--happy-eyeballs-timeout-ms <milliseconds>"
Happy eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
addresses for dual-stack hosts, preferring IPv6 first for the number of
milliseconds. If the IPv6 address cannot be connected to within that time then
a connection attempt is made to the IPv4 address in parallel. The first
connection to be established is the one that is used.

The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
balance human factors against network load." libcurl currently defaults to
200 ms. Firefox and Chrome currently default to 300 ms.

If this option is used several times, the last one will be used.

Added in 7.59.0.
.IP "--haproxy-protocol"
(HTTP) Send a HAProxy PROXY protocol v1 header at the beginning of the connection. This
is used by some load balancers and reverse proxies to indicate the client's
true IP address and port.

This option is primarily useful when sending test requests to a service that
expects this header.

Added in 7.60.0.
.IP "-I, --head"
(HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the command HEAD which this uses
to get nothing but the header of a document. When used on an FTP or FILE file,
curl displays the file size and last modification time only.
.IP "-H, --header <header/@file>"
(HTTP) Extra header to include in the request when sending HTTP to a server. You may
specify any number of extra headers. Note that if you should add a custom
header that has the same name as one of the internal ones curl would use, your
externally set header will be used instead of the internal one. This allows
you to make even trickier stuff than curl would normally do. You should not
replace internally set headers without knowing perfectly well what you're
doing. Remove an internal header by giving a replacement without content on
the right side of the colon, as in: -H \&"Host:". If you send the custom
header with no-value then its header must be terminated with a semicolon, such
as \-H \&"X-Custom-Header;" to send "X-Custom-Header:".

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus \fBnot\fP add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

This option can take an argument in @filename style, which then adds a header
for each line in the input file. Using @- will make curl read the header file
from stdin. Added in 7.55.0.

You need \fI--proxy-header\fP to send custom headers intended for a HTTP
proxy. Added in 7.37.0.

Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
with a request body, will make curl send the data using chunked encoding.

Example:

 curl -H "X-First-Name: Joe" http://example.com/

\fBWARNING\fP: headers set with this option will be set in all requests - even
after redirects are followed, like when told with \fI-L, --location\fP. This can lead to
the header being sent to other hosts than the original host, so sensitive
headers should be used with caution combined with following redirects.

This option can be used multiple times to add/replace/remove multiple headers.

See also \fI-A, --user-agent\fP and \fI-e, --referer\fP.
.IP "-h, --help <category>"
Usage help. This lists all commands of the <category>.
If no arg was provided, curl will display the most important
command line arguments.
If the argument "all" was provided, curl will display all options available.
If the argument "category" was provided, curl will display all categories and
their meanings.
.IP "--hostpubmd5 <md5>"
(SFTP SCP) Pass a string containing 32 hexadecimal digits. The string should
be the 128 bit MD5 checksum of the remote host's public key, curl will refuse
the connection with the host unless the md5sums match.

Added in 7.17.1.
.IP "--hsts <file name>"
(HTTPS) WARNING: this option is experimental. Do not use in production.

This option enables HSTS for the transfer. If the file name points to an
existing HSTS cache file, that will be used. After a completed transfer, the
cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle HSTS in memory.

If this option is used several times, curl will load contents from all the
files but the last one will be used for saving.

Added in 7.74.0.
.IP "--http0.9"
(HTTP) Tells curl to be fine with HTTP version 0.9 response.

HTTP/0.9 is a completely headerless response and therefore you can also
connect with this to non-HTTP servers and still get a response since curl will
simply transparently downgrade - if allowed.

Since curl 7.66.0, HTTP/0.9 is disabled by default.
.IP "-0, --http1.0"
(HTTP) Tells curl to use HTTP version 1.0 instead of using its internally preferred
HTTP version.

This option overrides \fI--http1.1\fP and \fI--http2\fP.
.IP "--http1.1"
(HTTP) Tells curl to use HTTP version 1.1.

This option overrides \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.33.0.
.IP "--http2-prior-knowledge"
(HTTP) Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1
Upgrade. It requires prior knowledge that the server supports HTTP/2 straight
away. HTTPS requests will still do HTTP/2 the standard way with negotiated
protocol version in the TLS handshake.

\fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.49.0.
.IP "--http2"
(HTTP) Tells curl to use HTTP version 2.

See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
.IP "--http3"
(HTTP) 
WARNING: this option is experimental. Do not use in production.

Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
redirected via Alt-SVc, but this option allows a user to circumvent that when
you know that the target speaks HTTP/3 on the given host and port.

This option will make curl fail if a QUIC connection cannot be established, it
cannot fall back to a lower HTTP version on its own.

See also \fI--http1.1\fP and \fI--http2\fP. \fI--http3\fP requires that the underlying libcurl was built to support HTTP/3. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP. Added in 7.66.0.
.IP "--ignore-content-length"
(FTP HTTP) For HTTP, Ignore the Content-Length header. This is particularly useful for
servers running Apache 1.x, which will report incorrect Content-Length for
files larger than 2 gigabytes.

For FTP (since 7.46.0), skip the RETR command to figure out the size before
downloading a file.
.IP "-i, --include"
Include the HTTP response headers in the output. The HTTP response headers can
include things like server name, cookies, date of the document, HTTP version
and more...

To view the request headers, consider the \fI-v, --verbose\fP option.

See also \fI-v, --verbose\fP.
.IP "-k, --insecure"
(TLS) 
By default, every SSL connection curl makes is verified to be secure. This
option allows curl to proceed and operate even for server connections
otherwise considered insecure.

The server connection is verified by making sure the server's certificate
contains the right name and verifies successfully using the cert store.

See this online resource for further details:
 https://curl.se/docs/sslcerts.html

See also \fI--proxy-insecure\fP and \fI--cacert\fP.
.IP "--interface <name>"

Perform an operation using a specified interface. You can enter interface
name, IP address or host name. An example could look like:

 curl --interface eth0:1 https://www.example.com/

If this option is used several times, the last one will be used.

On Linux it can be used to specify a VRF, but the binary needs to either
have CAP_NET_RAW or to be run as root. More information about Linux VRF:
https://www.kernel.org/doc/Documentation/networking/vrf.txt

See also \fI--dns-interface\fP.
.IP "-4, --ipv4"
This option tells curl to resolve names to IPv4 addresses only, and not for
example try IPv6.

See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-6, --ipv6\fP.
.IP "-6, --ipv6"
This option tells curl to resolve names to IPv6 addresses only, and not for
example try IPv4.

See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-4, --ipv4\fP.
.IP "-j, --junk-session-cookies"
(HTTP) When curl is told to read cookies from a given file, this option will make it
discard all "session cookies". This will basically have the same effect as if
a new session is started. Typical browsers always discard session cookies when
they're closed down.

See also \fI-b, --cookie\fP and \fI-c, --cookie-jar\fP.
.IP "--keepalive-time <seconds>"
This option sets the time a connection needs to remain idle before sending
keepalive probes and the time between individual keepalive probes. It is
currently effective on operating systems offering the TCP_KEEPIDLE and
TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). This
option has no effect if \fI--no-keepalive\fP is used.

If this option is used several times, the last one will be used. If
unspecified, the option defaults to 60 seconds.

Added in 7.18.0.
.IP "--key-type <type>"
(TLS) Private key file type. Specify which type your \fI--key\fP provided private key
is. DER, PEM, and ENG are supported. If not specified, PEM is assumed.

If this option is used several times, the last one will be used.
.IP "--key <key>"
(TLS SSH) Private key file name. Allows you to provide your private key in this separate
file. For SSH, if not specified, curl tries the following candidates in order:
\&'~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.

If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a
PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI--engine\fP option will be set
as "pkcs11" if none was provided and the \fI--key-type\fP option will be set as
"ENG" if none was provided.

If this option is used several times, the last one will be used.
.IP "--krb <level>"
(FTP) Enable Kerberos authentication and use. The level must be entered and should
be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a
level that is not one of these, 'private' will instead be used.

If this option is used several times, the last one will be used.

\fI--krb\fP requires that the underlying libcurl was built to support Kerberos.
.IP "--libcurl <file>"
Append this option to any ordinary curl command line, and you will get a
libcurl-using C source code written to the file that does the equivalent
of what your command-line operation does!

If this option is used several times, the last given file name will be
used.

Added in 7.16.1.
.IP "--limit-rate <speed>"
Specify the maximum transfer rate you want curl to use - for both downloads
and uploads. This feature is useful if you have a limited pipe and you'd like
your transfer not to use your entire bandwidth. To make it slower than it
otherwise would be.

The given speed is measured in bytes/second, unless a suffix is appended.
Appending 'k' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.

If you also use the \fI-Y, --speed-limit\fP option, that option will take precedence and
might cripple the rate-limiting slightly, to help keeping the speed-limit
logic working.

If this option is used several times, the last one will be used.
.IP "-l, --list-only"
(FTP POP3) (FTP)
When listing an FTP directory, this switch forces a name-only view. This is
especially useful if the user wants to machine-parse the contents of an FTP
directory since the normal directory view doesn't use a standard look or
format. When used like this, the option causes a NLST command to be sent to
the server instead of LIST.

Note: Some FTP servers list only files in their response to NLST; they do not
include sub-directories and symbolic links.

(POP3)
When retrieving a specific email from POP3, this switch forces a LIST command
to be performed instead of RETR. This is particularly useful if the user wants
to see if a specific message id exists on the server and what size it is.

Note: When combined with \fI-X, --request\fP, this option can be used to send an UIDL
command instead, so the user may use the email's unique identifier rather than
it's message id to make the request.

Added in 4.0.
.IP "--local-port <num/range>"
Set a preferred single number or range (FROM-TO) of local port numbers to use
for the connection(s).  Note that port numbers by nature are a scarce resource
that will be busy at times so setting this range to something too narrow might
cause unnecessary connection setup failures.

Added in 7.15.2.
.IP "--location-trusted"
(HTTP) Like \fI-L, --location\fP, but will allow sending the name + password to all hosts that
the site may redirect to. This may or may not introduce a security breach if
the site redirects you to a site to which you'll send your authentication info
(which is plaintext in the case of HTTP Basic authentication).

See also \fI-u, --user\fP.
.IP "-L, --location"
(HTTP) If the server reports that the requested page has moved to a different
location (indicated with a Location: header and a 3XX response code), this
option will make curl redo the request on the new place. If used together with
\fI-i, --include\fP or \fI-I, --head\fP, headers from all requested pages will be shown. When
authentication is used, curl only sends its credentials to the initial
host. If a redirect takes curl to a different host, it won't be able to
intercept the user+password. See also \fI--location-trusted\fP on how to change
this. You can limit the amount of redirects to follow by using the
\fI--max-redirs\fP option.

When curl follows a redirect and if the request is a POST, it will do the
following request with a GET if the HTTP response was 301, 302, or 303. If the
response code was any other 3xx code, curl will re-send the following request
using the same unmodified method.

You can tell curl to not change POST requests to GET after a 30x response by
using the dedicated options for that: \fI--post301\fP, \fI--post302\fP and \fI--post303\fP.

The method set with \fI-X, --request\fP overrides the method curl would otherwise select
to use.
.IP "--login-options <options>"
(IMAP POP3 SMTP) Specify the login options to use during server authentication.

You can use the login options to specify protocol specific options that may
be used during authentication. At present only IMAP, POP3 and SMTP support
login options. For more information about the login options please see
RFC 2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt

If this option is used several times, the last one will be used.

Added in 7.34.0.
.IP "--mail-auth <address>"
(SMTP) Specify a single address. This will be used to specify the authentication
address (identity) of a submitted message that is being relayed to another
server.

See also \fI--mail-rcpt\fP and \fI--mail-from\fP. Added in 7.25.0.
.IP "--mail-from <address>"
(SMTP) Specify a single address that the given mail should get sent from.

See also \fI--mail-rcpt\fP and \fI--mail-auth\fP. Added in 7.20.0.
.IP "--mail-rcpt-allowfails"
(SMTP) When sending data to multiple recipients, by default curl will abort SMTP
conversation if at least one of the recipients causes RCPT TO command to
return an error.

The default behavior can be changed by passing \fI--mail-rcpt-allowfails\fP
command-line option which will make curl ignore errors and proceed with the
remaining valid recipients.

In case when all recipients cause RCPT TO command to fail, curl will abort SMTP
conversation and return the error received from to the last RCPT TO command.
Added in 7.69.0.
.IP "--mail-rcpt <address>"
(SMTP) Specify a single address, user name or mailing list name. Repeat this
option several times to send to multiple recipients.

When performing a mail transfer, the recipient should specify a valid email
address to send the mail to.

When performing an address verification (VRFY command), the recipient should be
specified as the user name or user name and domain (as per Section 3.5 of
RFC5321). (Added in 7.34.0)

When performing a mailing list expand (EXPN command), the recipient should be
specified using the mailing list name, such as "Friends" or "London-Office".
(Added in 7.34.0)

Added in 7.20.0.
.IP "-M, --manual"
Manual. Display the huge help text.
.IP "--max-filesize <bytes>"
Specify the maximum size (in bytes) of a file to download. If the file
requested is larger than this value, the transfer will not start and curl will
return with exit code 63.

A size modifier may be used. For example, Appending 'k' or 'K' will count the
number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it
gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)

\fBNOTE:\fP The file size is not always known prior to download, and for such
files this option has no effect even if the file transfer ends up being larger
than this given limit. This concerns both FTP and HTTP transfers.

See also \fI--limit-rate\fP.
.IP "--max-redirs <num>"
(HTTP) Set maximum number of redirection-followings allowed. When \fI-L, --location\fP is used,
is used to prevent curl from following redirections too much. By default, the
limit is set to 50 redirections. Set this option to -1 to make it unlimited.

If this option is used several times, the last one will be used.
.IP "-m, --max-time <seconds>"
Maximum time in seconds that you allow the whole operation to take.  This is
useful for preventing your batch jobs from hanging for hours due to slow
networks or links going down.  Since 7.32.0, this option accepts decimal
values, but the actual timeout will decrease in accuracy as the specified
timeout increases in decimal precision.

If this option is used several times, the last one will be used.

See also \fI--connect-timeout\fP.
.IP "--metalink"
This option can tell curl to parse and process a given URI as Metalink file
(both version 3 and 4 (RFC 5854) are supported) and make use of the mirrors
listed within for failover if there are errors (such as the file or server not
being available). It will also verify the hash of the file after the download
completes. The Metalink file itself is downloaded and processed in memory and
not stored in the local file system.

Example to use a remote Metalink file:

 curl --metalink http://www.example.com/example.metalink

To use a Metalink file in the local file system, use FILE protocol (file://):

 curl --metalink file://example.metalink

Please note that if FILE protocol is disabled, there is no way to use a local
Metalink file at the time of this writing. Also note that if \fI--metalink\fP and
\fI-i, --include\fP are used together, --include will be ignored. This is because
including headers in the response will break Metalink parser and if the
headers are included in the file described in Metalink file, hash check will
fail.

\fI--metalink\fP requires that the underlying libcurl was built to support metalink. Added in 7.27.0.
.IP "--negotiate"
(HTTP) Enables Negotiate (SPNEGO) authentication.

This option requires a library built with GSS-API or SSPI support. Use
\fI-V, --version\fP to see if your curl supports GSS-API/SSPI or SPNEGO.

When using this option, you must also provide a fake \fI-u, --user\fP option to activate
the authentication code properly. Sending a '-u :' is enough as the user name
and password from the \fI-u, --user\fP option aren't actually used.

If this option is used several times, only the first one is used.

See also \fI--basic\fP, \fI--ntlm\fP, \fI--anyauth\fP and \fI--proxy-negotiate\fP.
.IP "--netrc-file <filename>"
This option is similar to \fI-n, --netrc\fP, except that you provide the path (absolute
or relative) to the netrc file that curl should use.  You can only specify one
netrc file per invocation. If several \fI--netrc-file\fP options are provided,
the last one will be used.

It will abide by \fI--netrc-optional\fP if specified.

This option overrides \fI-n, --netrc\fP. Added in 7.21.5.
.IP "--netrc-optional"
Very similar to \fI-n, --netrc\fP, but this option makes the .netrc usage \fBoptional\fP
and not mandatory as the \fI-n, --netrc\fP option does.

See also \fI--netrc-file\fP. This option overrides \fI-n, --netrc\fP.
.IP "-n, --netrc"
Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
home directory for login name and password. This is typically used for FTP on
Unix. If used with HTTP, curl will enable user authentication. See
\fInetrc(5)\fP \fIftp(1)\fP for details on the file format. Curl will not
complain if that file doesn't have the right permissions (it should not be
either world- or group-readable). The environment variable "HOME" is used to
find the home directory.

A quick and very simple example of how to setup a \fI.netrc\fP to allow curl
to FTP to the machine host.domain.com with user name \&'myself' and password
\&'secret' should look similar to:

.B "machine host.domain.com login myself password secret"
.IP "-:, --next"
Tells curl to use a separate operation for the following URL and associated
options. This allows you to send several URL requests, each with their own
specific options, for example, such as different user names or custom requests
for each.

\fI-:, --next\fP will reset all local options and only global ones will have their
values survive over to the operation following the \fI-:, --next\fP instruction. Global
options include \fI-v, --verbose\fP, \fI--trace\fP, \fI--trace-ascii\fP and \fI--fail-early\fP.

For example, you can do both a GET and a POST in a single command line:

 curl www1.example.com --next -d postthis www2.example.com

Added in 7.36.0.
.IP "--no-alpn"
(HTTPS) Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built
with an SSL library that supports ALPN. ALPN is used by a libcurl that supports
HTTP/2 to negotiate HTTP/2 support with the server during https sessions.

See also \fI--no-npn\fP and \fI--http2\fP. \fI--no-alpn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.
.IP "-N, --no-buffer"
Disables the buffering of the output stream. In normal work situations, curl
will use a standard buffered output stream that will have the effect that it
will output the data in chunks, not necessarily exactly when the data arrives.
Using this option will disable that buffering.

Note that this is the negated option name documented. You can thus use
--buffer to enforce the buffering.
.IP "--no-keepalive"
Disables the use of keepalive messages on the TCP connection. curl otherwise
enables them by default.

Note that this is the negated option name documented. You can thus use
--keepalive to enforce keepalive.
.IP "--no-npn"
(HTTPS) Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
with an SSL library that supports NPN. NPN is used by a libcurl that supports
HTTP/2 to negotiate HTTP/2 support with the server during https sessions.

See also \fI--no-alpn\fP and \fI--http2\fP. \fI--no-npn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.
.IP "--no-progress-meter"
Option to switch off the progress meter output without muting or otherwise
affecting warning and informational messages like \fI-s, --silent\fP does.

Note that this is the negated option name documented. You can thus use
--progress-meter to enable the progress meter again.

See also \fI-v, --verbose\fP and \fI-s, --silent\fP. Added in 7.67.0.
.IP "--no-sessionid"
(TLS) Disable curl's use of SSL session-ID caching.  By default all transfers are
done using the cache. Note that while nothing should ever get hurt by
attempting to reuse SSL session-IDs, there seem to be broken SSL
implementations in the wild that may require you to disable this in order for
you to succeed.

Note that this is the negated option name documented. You can thus use
--sessionid to enforce session-ID caching.

Added in 7.16.0.
.IP "--noproxy <no-proxy-list>"
Comma-separated list of hosts which do not use a proxy, if one is specified.
The only wildcard is a single * character, which matches all hosts, and
effectively disables the proxy. Each name in this list is matched as either
a domain which contains the hostname, or the hostname itself. For example,
local.com would match local.com, local.com:80, and www.local.com, but not
www.notlocal.com.

Since 7.53.0, This option overrides the environment variables that disable the
proxy. If there's an environment variable disabling a proxy, you can set
noproxy list to \&"" to override it.

Added in 7.19.4.
.IP "--ntlm-wb"
(HTTP) Enables NTLM much in the style \fI--ntlm\fP does, but hand over the authentication
to the separate binary ntlmauth application that is executed when needed.

See also \fI--ntlm\fP and \fI--proxy-ntlm\fP.
.IP "--ntlm"
(HTTP) Enables NTLM authentication. The NTLM authentication method was designed by
Microsoft and is used by IIS web servers. It is a proprietary protocol,
reverse-engineered by clever people and implemented in curl based on their
efforts. This kind of behavior should not be endorsed, you should encourage
everyone who uses NTLM to switch to a public and documented authentication
method instead, such as Digest.

If you want to enable NTLM for your proxy authentication, then use
\fI--proxy-ntlm\fP.

If this option is used several times, only the first one is used.

See also \fI--proxy-ntlm\fP. \fI--ntlm\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--basic\fP and \fI--negotiate\fP and \fI--digest\fP and \fI--anyauth\fP.
.IP "--oauth2-bearer <token>"
(IMAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
is used in conjunction with the user name which can be specified as part of
the \fI--url\fP or \fI-u, --user\fP options.

The Bearer Token and user name are formatted according to RFC 6750.

If this option is used several times, the last one will be used.
.IP "--output-dir <dir>"

This option specifies the directory in which files should be stored, when
\fI-O, --remote-name\fP or \fI-o, --output\fP are used.

The given output directory is used for all URLs and output options on the
command line, up until the first \fI-:, --next\fP.

If the specified target directory doesn't exist, the operation will fail
unless \fI--create-dirs\fP is also used.

If this option is used multiple times, the last specified directory will be
used.

See also \fI-O, --remote-name\fP and \fI-J, --remote-header-name\fP. Added in 7.73.0.
.IP "-o, --output <file>"
Write output to <file> instead of stdout. If you are using {} or [] to fetch
multiple documents, you should quote the URL and you can use '#' followed by a
number in the <file> specifier. That variable will be replaced with the current
string for the URL being fetched. Like in:

 curl "http://{one,two}.example.com" -o "file_#1.txt"

or use several variables like:

 curl "http://{site,host}.host[1-5].com" -o "#1_#2"

You may use this option as many times as the number of URLs you have. For
example, if you specify two URLs on the same command line, you can use it like
this:

  curl -o aa example.com -o bb example.net

and the order of the -o options and the URLs doesn't matter, just that the
first -o is for the first URL and so on, so the above command line can also be
written as

  curl example.com example.net -o aa -o bb

See also the \fI--create-dirs\fP option to create the local directories
dynamically. Specifying the output as '-' (a single dash) will force the
output to be done to stdout.

See also \fI-O, --remote-name\fP, \fI--remote-name-all\fP and \fI-J, --remote-header-name\fP.
.IP "--parallel-immediate"
When doing parallel transfers, this option will instruct curl that it should
rather prefer opening up more connections in parallel at once rather than
waiting to see if new transfers can be added as multiplexed streams on another
connection.

See also \fI-Z, --parallel\fP and \fI--parallel-max\fP. Added in 7.68.0.
.IP "--parallel-max"
When asked to do parallel transfers, using \fI-Z, --parallel\fP, this option controls
the maximum amount of transfers to do simultaneously.

The default is 50.

See also \fI-Z, --parallel\fP. Added in 7.66.0.
.IP "-Z, --parallel"
Makes curl perform its transfers in parallel as compared to the regular serial
manner.

Added in 7.66.0.
.IP "--pass <phrase>"
(SSH TLS) Passphrase for the private key

If this option is used several times, the last one will be used.
.IP "--path-as-is"
Tell curl to not handle sequences of /../ or /./ in the given URL
path. Normally curl will squash or merge them according to standards but with
this option set you tell it not to do that.

Added in 7.42.0.
.IP "--pinnedpubkey <hashes>"
(TLS) Tells curl to use the specified public key file (or hashes) to verify the
peer. This can be a path to a file which contains a single public key in PEM
or DER format, or any number of base64 encoded sha256 hashes preceded by
\'sha256//\' and separated by \';\'

When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. A public key is extracted from this certificate and
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.

PEM/DER support:
  7.39.0: OpenSSL, GnuTLS and GSKit
  7.43.0: NSS and wolfSSL
  7.47.0: mbedtls
sha256 support:
  7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL
  7.47.0: mbedtls
Other SSL backends not supported.

If this option is used several times, the last one will be used.
.IP "--post301"
(HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST requests into GET
requests when following a 301 redirection. The non-RFC behavior is ubiquitous
in web browsers, so curl does the conversion by default to maintain
consistency. However, a server may require a POST to remain a POST after such
a redirection. This option is meaningful only when using \fI-L, --location\fP.

See also \fI--post302\fP, \fI--post303\fP and \fI-L, --location\fP. Added in 7.17.1.
.IP "--post302"
(HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST requests into GET
requests when following a 302 redirection. The non-RFC behavior is ubiquitous
in web browsers, so curl does the conversion by default to maintain
consistency. However, a server may require a POST to remain a POST after such
a redirection. This option is meaningful only when using \fI-L, --location\fP.

See also \fI--post301\fP, \fI--post303\fP and \fI-L, --location\fP. Added in 7.19.1.
.IP "--post303"
(HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST requests into GET
requests when following 303 redirections. A server may require a POST to
remain a POST after a 303 redirection. This option is meaningful only when
using \fI-L, --location\fP.

See also \fI--post302\fP, \fI--post301\fP and \fI-L, --location\fP. Added in 7.26.0.
.IP "--preproxy [protocol://]host[:port]"
Use the specified SOCKS proxy before connecting to an HTTP or HTTPS \fI-x, --proxy\fP. In
such a case curl first connects to the SOCKS proxy and then connects (through
SOCKS) to the HTTP or HTTPS proxy. Hence pre proxy.

The pre proxy string should be specified with a protocol:// prefix to specify
alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
socks5h:// to request the specific SOCKS version to be used. No protocol
specified will make curl default to SOCKS4.

If the port number is not specified in the proxy string, it is assumed to be
1080.

User and password that might be provided in the proxy string are URL decoded
by curl. This allows you to pass in special characters such as @ by using %40
or pass in a colon with %3a.

If this option is used several times, the last one will be used.

Added in 7.52.0.
.IP "-#, --progress-bar"
Make curl display transfer progress as a simple progress bar instead of the
standard, more informational, meter.

This progress bar draws a single line of '#' characters across the screen and
shows a percentage if the transfer size is known. For transfers without a
known size, there will be space ship (-=o=-) that moves back and forth but
only while data is being transferred, with a set of flying hash sign symbols on
top.
.IP "--proto-default <protocol>"
Tells curl to use \fIprotocol\fP for any URL missing a scheme name.

Example:

 curl --proto-default https ftp.mozilla.org

An unknown or unsupported protocol causes error
\fICURLE_UNSUPPORTED_PROTOCOL\fP (1).

This option does not change the default proxy protocol (http).

Without this option curl would make a guess based on the host, see \fI--url\fP for
details.

Added in 7.45.0.
.IP "--proto-redir <protocols>"
Tells curl to limit what protocols it may use on redirect. Protocols denied by
\fI--proto\fP are not overridden by this option. See --proto for how protocols are
represented.

Example, allow only HTTP and HTTPS on redirect:

 curl --proto-redir -all,http,https http://example.com

By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect (7.65.2).
Older versions of curl allowed all protocols on redirect except several
disabled for security reasons: Since 7.19.4 FILE and SCP are disabled, and
since 7.40.0 SMB and SMBS are also disabled. Specifying \fIall\fP or \fI+all\fP
enables all protocols on redirect, including those disabled for security.

Added in 7.20.2.
.IP "--proto <protocols>"
Tells curl to limit what protocols it may use in the transfer. Protocols are
evaluated left to right, are comma separated, and are each a protocol name or
\&'all', optionally prefixed by zero or more modifiers. Available modifiers are:
.RS
.TP 3
.B +
Permit this protocol in addition to protocols already permitted (this is
the default if no modifier is used).
.TP
.B -
Deny this protocol, removing it from the list of protocols already permitted.
.TP
.B =
Permit only this protocol (ignoring the list already permitted), though
subject to later modification by subsequent entries in the comma separated
list.
.RE
.IP
For example:
.RS
.TP 15
.B \fI--proto\fP -ftps
uses the default protocols, but disables ftps
.TP
.B  \fI--proto\fP -all,https,+http
only enables http and https
.TP
.B \fI--proto\fP =http,https
also only enables http and https
.RE

Unknown protocols produce a warning. This allows scripts to safely rely on
being able to disable potentially dangerous protocols, without relying upon
support for that protocol being built into curl to avoid an error.

This option can be used multiple times, in which case the effect is the same
as concatenating the protocols into one instance of the option.

See also \fI--proto-redir\fP and \fI--proto-default\fP. Added in 7.20.2.
.IP "--proxy-anyauth"
Tells curl to pick a suitable authentication method when communicating with
the given HTTP proxy. This might cause an extra request/response round-trip.

See also \fI-x, --proxy\fP, \fI--proxy-basic\fP and \fI--proxy-digest\fP. Added in 7.13.2.
.IP "--proxy-basic"
Tells curl to use HTTP Basic authentication when communicating with the given
proxy. Use \fI--basic\fP for enabling HTTP Basic with a remote host. Basic is the
default authentication method curl uses with proxies.

See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-digest\fP.
.IP "--proxy-cacert <file>"
Same as \fI--cacert\fP but used in HTTPS proxy context.

See also \fI--proxy-capath\fP, \fI--cacert\fP, \fI--capath\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "--proxy-capath <dir>"
Same as \fI--capath\fP but used in HTTPS proxy context.

See also \fI--proxy-cacert\fP, \fI-x, --proxy\fP and \fI--capath\fP. Added in 7.52.0.
.IP "--proxy-cert-type <type>"
Same as \fI--cert-type\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-cert <cert[:passwd]>"
Same as \fI-E, --cert\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-ciphers <list>"
Same as \fI--ciphers\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-crlfile <file>"
Same as \fI--crlfile\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-digest"
Tells curl to use HTTP Digest authentication when communicating with the given
proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.

See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
.IP "--proxy-header <header/@file>"
(HTTP) Extra header to include in the request when sending HTTP to a proxy. You may
specify any number of extra headers. This is the equivalent option to \fI-H, --header\fP
but is for proxy communication only like in CONNECT requests when you want a
separate header sent to the proxy to what is sent to the actual remote host.

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus \fBnot\fP add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

Headers specified with this option will not be included in requests that curl
knows will not be sent to a proxy.

Starting in 7.55.0, this option can take an argument in @filename style, which
then adds a header for each line in the input file. Using @- will make curl
read the header file from stdin.

This option can be used multiple times to add/replace/remove multiple headers.

Added in 7.37.0.
.IP "--proxy-insecure"
Same as \fI-k, --insecure\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-key-type <type>"
Same as \fI--key-type\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-key <key>"
Same as \fI--key\fP but used in HTTPS proxy context.
.IP "--proxy-negotiate"
Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating
with the given proxy. Use \fI--negotiate\fP for enabling HTTP Negotiate (SPNEGO)
with a remote host.

See also \fI--proxy-anyauth\fP and \fI--proxy-basic\fP. Added in 7.17.1.
.IP "--proxy-ntlm"
Tells curl to use HTTP NTLM authentication when communicating with the given
proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.

See also \fI--proxy-negotiate\fP and \fI--proxy-anyauth\fP.
.IP "--proxy-pass <phrase>"
Same as \fI--pass\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-pinnedpubkey <hashes>"
(TLS) Tells curl to use the specified public key file (or hashes) to verify the
proxy. This can be a path to a file which contains a single public key in PEM
or DER format, or any number of base64 encoded sha256 hashes preceded by
\'sha256//\' and separated by \';\'

When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. A public key is extracted from this certificate and
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.

If this option is used several times, the last one will be used.
.IP "--proxy-service-name <name>"
This option allows you to change the service name for proxy negotiation.

Added in 7.43.0.
.IP "--proxy-ssl-allow-beast"
Same as \fI--ssl-allow-beast\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-tls13-ciphers <ciphersuite list>"
(TLS) Specifies which cipher suites to use in the connection to your HTTPS proxy
when it negotiates TLS 1.3. The list of ciphers suites must specify valid
ciphers. Read up on TLS 1.3 cipher suite details on this URL:

 https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
cipher suites by using the \fI--proxy-ciphers\fP option.

If this option is used several times, the last one will be used.
.IP "--proxy-tlsauthtype <type>"
Same as \fI--tlsauthtype\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-tlspassword <string>"
Same as \fI--tlspassword\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-tlsuser <name>"
Same as \fI--tlsuser\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "--proxy-tlsv1"
Same as \fI-1, --tlsv1\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "-U, --proxy-user <user:password>"
Specify the user name and password to use for proxy authentication.

If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM
authentication then you can tell curl to select the user name and password
from your environment by specifying a single colon with this option: "-U :".

On systems where it works, curl will hide the given option argument from
process listings. This is not enough to protect credentials from possibly
getting seen by other users on the same system as they will still be visible
for a brief moment before cleared. Such sensitive data should be retrieved
from a file instead or similar and never used in clear text in a command line.

If this option is used several times, the last one will be used.
.IP "-x, --proxy [protocol://]host[:port]"
Use the specified proxy.

The proxy string can be specified with a protocol:// prefix. No protocol
specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://,
socks5:// or socks5h:// to request a specific SOCKS version to be used.
(The protocol support was added in curl 7.21.7)








|

|


|





|

|

|

|




|
|
|




|

|






|






|






|





|

















|

|




|


|


|


















|
|







|





|










|






|






|





|
|
|



|





|




|














|








|



|







|












|







|

|
|






|






|





|













|




|


|




|



|






|



|












|






|




|


|












|




|








|




|




|






|




|





|
|



|







|
|



|







|








|
|








|




|















|




|






|
|





|



|


|

|







|

|

|










|





|



|




|






|















|

|








|




|
|

|


|









|









|



|


|
|





|



|

|

|




|
|

|


|


|
|
|


|
|
|











|





|
|
|



|


|





|






|
|




|
|





|

|


|


|







|


|












|
|



|








|




|


|




|


|


|


|





|





|



|





|

|
|


|

|




|






|
|





|




|



|





|




















|




|


|




|


|



|


|
|


















|








|




|






|



|

|




|








|









|











|


|


|











|




|

|



|
|


|
|


|
|


|
|


|
|


|
|


|

|


|

|


















|
|


|
|


|
|
|

|



|

|


|
|


|











|



|
|


|








|


|
|


|
|


|
|


|
|


|













|







968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
  X-header-2: this is
.br
   another header


To support sending multipart mail messages, the syntax is extended as follows:
.br
\- name can be omitted: the equal sign is the first character of the argument,
.br
\- if data starts with '(', this signals to start a new multipart: it can be
followed by a content type specification.
.br
\- a multipart can be terminated with a '=)' argument.

Example: the following command sends an SMTP mime e-mail consisting in an
inline part in two alternative formats: plain text and HTML. It attaches a
text file:

 curl \-F '=(;type=multipart/alternative' \\
.br
         \-F '=plain text message' \\
.br
         \-F '= <body>HTML message</body>;type=text/html' \\
.br
      \-F '=)' \-F '=@textfile.txt' ...  smtp://example.com

Data can be encoded for transfer using encoder=. Available encodings are
\fIbinary\fP and \fI8bit\fP that do nothing else than adding the corresponding
Content-Transfer-Encoding header, \fI7bit\fP that only rejects 8-bit characters
with a transfer error, \fIquoted-printable\fP and \fIbase64\fP that encodes data
according to the corresponding schemes, limiting lines length to 76
characters.

Example: send multipart mail with a quoted-printable text message and a
base64 attached file:

 curl \-F '=text message;encoder=quoted-printable' \\
.br
      \-F '=@localfile;encoder=base64' ... smtp://example.com

See further examples and details in the MANUAL.

This option can be used multiple times.

This option overrides \fI-d, --data\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
.IP "\-\-ftp-account <data>"
(FTP) When an FTP server asks for "account data" after user name and password has
been provided, this data is sent off using the ACCT command.

If this option is used several times, the last one will be used.

Added in 7.13.0.
.IP "\-\-ftp-alternative-to-user <command>"
(FTP) If authenticating with the USER and PASS commands fails, send this command.
When connecting to Tumbleweed's Secure Transport server over FTPS using a
client certificate, using "SITE AUTH" will tell the server to retrieve the
username from the certificate.

Added in 7.15.5.
.IP "\-\-ftp-create-dirs"
(FTP SFTP) When an FTP or SFTP URL/operation uses a path that doesn't currently exist on
the server, the standard behavior of curl is to fail. Using this option, curl
will instead attempt to create missing directories.

See also \fI--create-dirs\fP.
.IP "\-\-ftp-method <method>"
(FTP) Control what method curl should use to reach a file on an FTP(S)
server. The method argument should be one of the following alternatives:
.RS
.IP multicwd
curl does a single CWD operation for each path part in the given URL. For deep
hierarchies this means very many commands. This is how RFC 1738 says it should
be done. This is the default but the slowest behavior.
.IP nocwd
curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full
path to the server for all these commands. This is the fastest behavior.
.IP singlecwd
curl does one CWD with the full target directory and then operates on the file
\&"normally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE

Added in 7.15.1.
.IP "\-\-ftp-pasv"
(FTP) Use passive mode for the data connection. Passive is the internal default
behavior, but using this option can be used to override a previous \fI\-P, \-\-ftp-port\fP
option.

If this option is used several times, only the first one is used. Undoing an
enforced passive really isn't doable but you must then instead enforce the
correct \fI\-P, \-\-ftp-port\fP again.

Passive mode means that curl will try the EPSV command first and then PASV,
unless \fI\-\-disable-epsv\fP is used.

See also \fI--disable-epsv\fP. Added in 7.11.0.
.IP "\-P, \-\-ftp-port <address>"
(FTP) Reverses the default initiator/listener roles when connecting with FTP. This
option makes curl use active mode. curl then tells the server to connect back
to the client's specified address and port, while passive mode asks the server
to setup an IP address and port for it to connect to. <address> should be one
of:
.RS
.IP interface
e.g. "eth0" to specify which interface's IP address you want to use (Unix only)
.IP "IP address"
e.g. "192.168.10.1" to specify the exact IP address
.IP "host name"
e.g. "my.host.domain" to specify the machine
.IP "-"
make curl pick the same IP address that is already used for the control
connection
.RE

If this option is used several times, the last one will be used. Disable the
use of PORT with \fI\-\-ftp-pasv\fP. Disable the attempt to use the EPRT command
instead of PORT by using \fI\-\-disable-eprt\fP. EPRT is really PORT++.

Since 7.19.5, you can append \&":[start]-[end]\&" to the right of the address,
to tell curl what TCP port range to use. That means you specify a port range,
from a lower to a higher number. A single number works as well, but do note
that it increases the risk of failure since the port may not be available.

See also \fI--ftp-pasv\fP and \fI--disable-eprt\fP.
.IP "\-\-ftp-pret"
(FTP) Tell curl to send a PRET command before PASV (and EPSV). Certain FTP servers,
mainly drftpd, require this non-standard command for directory listings as
well as up and downloads in PASV mode.

Added in 7.20.0.
.IP "\-\-ftp-skip-pasv-ip"
(FTP) Tell curl to not use the IP address the server suggests in its response
to curl's PASV command when curl connects the data connection. Instead curl
will re-use the same IP address it already uses for the control
connection.

Since curl 7.74.0 this option is enabled by default.

This option has no effect if PORT, EPRT or EPSV is used instead of PASV.

See also \fI--ftp-pasv\fP. Added in 7.14.2.
.IP "\-\-ftp-ssl-ccc-mode <active/passive>"
(FTP) Sets the CCC mode. The passive mode will not initiate the shutdown, but
instead wait for the server to do it, and will not reply to the shutdown from
the server. The active mode initiates the shutdown and waits for a reply from
the server.

See also \fI--ftp-ssl-ccc\fP. Added in 7.16.2.
.IP "\-\-ftp-ssl-ccc"
(FTP) Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after
authenticating. The rest of the control channel communication will be
unencrypted. This allows NAT routers to follow the FTP transaction. The
default mode is passive.

See also \fI--ssl\fP and \fI--ftp-ssl-ccc-mode\fP. Added in 7.16.1.
.IP "\-\-ftp-ssl-control"
(FTP) Require SSL/TLS for the FTP login, clear for transfer.  Allows secure
authentication, but non-encrypted data transfers for efficiency.  Fails the
transfer if the server doesn't support SSL/TLS.

Added in 7.16.0.
.IP "\-G, \-\-get"
When used, this option will make all data specified with \fI\-d, \-\-data\fP, \fI\-\-data-binary\fP
or \fI\-\-data-urlencode\fP to be used in an HTTP GET request instead of the POST
request that otherwise would be used. The data will be appended to the URL
with a '?' separator.

If used in combination with \fI\-I, \-\-head\fP, the POST data will instead be appended to
the URL with a HEAD request.

If this option is used several times, only the first one is used. This is
because undoing a GET doesn't make sense, but you should then instead enforce
the alternative method you prefer.
.IP "\-g, \-\-globoff"
This option switches off the "URL globbing parser". When you set this option,
you can specify URLs that contain the letters {}[] without having them being
interpreted by curl itself. Note that these letters are not normal legal URL
contents but they should be encoded according to the URI standard.
.IP "\-\-happy-eyeballs-timeout-ms <milliseconds>"
Happy eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
addresses for dual-stack hosts, preferring IPv6 first for the number of
milliseconds. If the IPv6 address cannot be connected to within that time then
a connection attempt is made to the IPv4 address in parallel. The first
connection to be established is the one that is used.

The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
balance human factors against network load." libcurl currently defaults to
200 ms. Firefox and Chrome currently default to 300 ms.

If this option is used several times, the last one will be used.

Added in 7.59.0.
.IP "\-\-haproxy-protocol"
(HTTP) Send a HAProxy PROXY protocol v1 header at the beginning of the connection. This
is used by some load balancers and reverse proxies to indicate the client's
true IP address and port.

This option is primarily useful when sending test requests to a service that
expects this header.

Added in 7.60.0.
.IP "\-I, \-\-head"
(HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the command HEAD which this uses
to get nothing but the header of a document. When used on an FTP or FILE file,
curl displays the file size and last modification time only.
.IP "\-H, \-\-header <header/@file>"
(HTTP) Extra header to include in the request when sending HTTP to a server. You may
specify any number of extra headers. Note that if you should add a custom
header that has the same name as one of the internal ones curl would use, your
externally set header will be used instead of the internal one. This allows
you to make even trickier stuff than curl would normally do. You should not
replace internally set headers without knowing perfectly well what you're
doing. Remove an internal header by giving a replacement without content on
the right side of the colon, as in: \-H \&"Host:". If you send the custom
header with no-value then its header must be terminated with a semicolon, such
as \-H \&"X-Custom-Header;" to send "X-Custom-Header:".

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus \fBnot\fP add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

This option can take an argument in @filename style, which then adds a header
for each line in the input file. Using @- will make curl read the header file
from stdin. Added in 7.55.0.

You need \fI\-\-proxy-header\fP to send custom headers intended for a HTTP
proxy. Added in 7.37.0.

Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
with a request body, will make curl send the data using chunked encoding.

Example:

 curl \-H "X-First-Name: Joe" http://example.com/

\fBWARNING\fP: headers set with this option will be set in all requests \- even
after redirects are followed, like when told with \fI\-L, \-\-location\fP. This can lead to
the header being sent to other hosts than the original host, so sensitive
headers should be used with caution combined with following redirects.

This option can be used multiple times to add/replace/remove multiple headers.

See also \fI-A, --user-agent\fP and \fI-e, --referer\fP.
.IP "\-h, \-\-help <category>"
Usage help. This lists all commands of the <category>.
If no arg was provided, curl will display the most important
command line arguments.
If the argument "all" was provided, curl will display all options available.
If the argument "category" was provided, curl will display all categories and
their meanings.
.IP "\-\-hostpubmd5 <md5>"
(SFTP SCP) Pass a string containing 32 hexadecimal digits. The string should
be the 128 bit MD5 checksum of the remote host's public key, curl will refuse
the connection with the host unless the md5sums match.

Added in 7.17.1.
.IP "\-\-hsts <file name>"
(HTTPS) WARNING: this option is experimental. Do not use in production.

This option enables HSTS for the transfer. If the file name points to an
existing HSTS cache file, that will be used. After a completed transfer, the
cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle HSTS in memory.

If this option is used several times, curl will load contents from all the
files but the last one will be used for saving.

Added in 7.74.0.
.IP "\-\-http0.9"
(HTTP) Tells curl to be fine with HTTP version 0.9 response.

HTTP/0.9 is a completely headerless response and therefore you can also
connect with this to non-HTTP servers and still get a response since curl will
simply transparently downgrade \- if allowed.

Since curl 7.66.0, HTTP/0.9 is disabled by default.
.IP "\-0, \-\-http1.0"
(HTTP) Tells curl to use HTTP version 1.0 instead of using its internally preferred
HTTP version.

This option overrides \fI--http1.1\fP and \fI--http2\fP.
.IP "\-\-http1.1"
(HTTP) Tells curl to use HTTP version 1.1.

This option overrides \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.33.0.
.IP "\-\-http2-prior-knowledge"
(HTTP) Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1
Upgrade. It requires prior knowledge that the server supports HTTP/2 straight
away. HTTPS requests will still do HTTP/2 the standard way with negotiated
protocol version in the TLS handshake.

\fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.49.0.
.IP "\-\-http2"
(HTTP) Tells curl to use HTTP version 2.

See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
.IP "\-\-http3"
(HTTP) 
WARNING: this option is experimental. Do not use in production.

Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
redirected via Alt-SVc, but this option allows a user to circumvent that when
you know that the target speaks HTTP/3 on the given host and port.

This option will make curl fail if a QUIC connection cannot be established, it
cannot fall back to a lower HTTP version on its own.

See also \fI--http1.1\fP and \fI--http2\fP. \fI--http3\fP requires that the underlying libcurl was built to support HTTP/3. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP. Added in 7.66.0.
.IP "\-\-ignore-content-length"
(FTP HTTP) For HTTP, Ignore the Content-Length header. This is particularly useful for
servers running Apache 1.x, which will report incorrect Content-Length for
files larger than 2 gigabytes.

For FTP (since 7.46.0), skip the RETR command to figure out the size before
downloading a file.
.IP "\-i, \-\-include"
Include the HTTP response headers in the output. The HTTP response headers can
include things like server name, cookies, date of the document, HTTP version
and more...

To view the request headers, consider the \fI\-v, \-\-verbose\fP option.

See also \fI-v, --verbose\fP.
.IP "\-k, \-\-insecure"
(TLS) 
By default, every SSL connection curl makes is verified to be secure. This
option allows curl to proceed and operate even for server connections
otherwise considered insecure.

The server connection is verified by making sure the server's certificate
contains the right name and verifies successfully using the cert store.

See this online resource for further details:
 https://curl.se/docs/sslcerts.html

See also \fI--proxy-insecure\fP and \fI--cacert\fP.
.IP "\-\-interface <name>"

Perform an operation using a specified interface. You can enter interface
name, IP address or host name. An example could look like:

 curl \-\-interface eth0:1 https://www.example.com/

If this option is used several times, the last one will be used.

On Linux it can be used to specify a VRF, but the binary needs to either
have CAP_NET_RAW or to be run as root. More information about Linux VRF:
https://www.kernel.org/doc/Documentation/networking/vrf.txt

See also \fI--dns-interface\fP.
.IP "\-4, \-\-ipv4"
This option tells curl to resolve names to IPv4 addresses only, and not for
example try IPv6.

See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-6, --ipv6\fP.
.IP "\-6, \-\-ipv6"
This option tells curl to resolve names to IPv6 addresses only, and not for
example try IPv4.

See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-4, --ipv4\fP.
.IP "\-j, \-\-junk-session-cookies"
(HTTP) When curl is told to read cookies from a given file, this option will make it
discard all "session cookies". This will basically have the same effect as if
a new session is started. Typical browsers always discard session cookies when
they're closed down.

See also \fI-b, --cookie\fP and \fI-c, --cookie-jar\fP.
.IP "\-\-keepalive-time <seconds>"
This option sets the time a connection needs to remain idle before sending
keepalive probes and the time between individual keepalive probes. It is
currently effective on operating systems offering the TCP_KEEPIDLE and
TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). This
option has no effect if \fI\-\-no-keepalive\fP is used.

If this option is used several times, the last one will be used. If
unspecified, the option defaults to 60 seconds.

Added in 7.18.0.
.IP "\-\-key-type <type>"
(TLS) Private key file type. Specify which type your \fI\-\-key\fP provided private key
is. DER, PEM, and ENG are supported. If not specified, PEM is assumed.

If this option is used several times, the last one will be used.
.IP "\-\-key <key>"
(TLS SSH) Private key file name. Allows you to provide your private key in this separate
file. For SSH, if not specified, curl tries the following candidates in order:
\&'~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.

If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a
PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP option will be set
as "pkcs11" if none was provided and the \fI\-\-key-type\fP option will be set as
"ENG" if none was provided.

If this option is used several times, the last one will be used.
.IP "\-\-krb <level>"
(FTP) Enable Kerberos authentication and use. The level must be entered and should
be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a
level that is not one of these, 'private' will instead be used.

If this option is used several times, the last one will be used.

\fI--krb\fP requires that the underlying libcurl was built to support Kerberos.
.IP "\-\-libcurl <file>"
Append this option to any ordinary curl command line, and you will get a
libcurl-using C source code written to the file that does the equivalent
of what your command-line operation does!

If this option is used several times, the last given file name will be
used.

Added in 7.16.1.
.IP "\-\-limit-rate <speed>"
Specify the maximum transfer rate you want curl to use \- for both downloads
and uploads. This feature is useful if you have a limited pipe and you'd like
your transfer not to use your entire bandwidth. To make it slower than it
otherwise would be.

The given speed is measured in bytes/second, unless a suffix is appended.
Appending 'k' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.

If you also use the \fI\-Y, \-\-speed-limit\fP option, that option will take precedence and
might cripple the rate-limiting slightly, to help keeping the speed-limit
logic working.

If this option is used several times, the last one will be used.
.IP "\-l, \-\-list-only"
(FTP POP3) (FTP)
When listing an FTP directory, this switch forces a name-only view. This is
especially useful if the user wants to machine-parse the contents of an FTP
directory since the normal directory view doesn't use a standard look or
format. When used like this, the option causes a NLST command to be sent to
the server instead of LIST.

Note: Some FTP servers list only files in their response to NLST; they do not
include sub-directories and symbolic links.

(POP3)
When retrieving a specific email from POP3, this switch forces a LIST command
to be performed instead of RETR. This is particularly useful if the user wants
to see if a specific message id exists on the server and what size it is.

Note: When combined with \fI\-X, \-\-request\fP, this option can be used to send an UIDL
command instead, so the user may use the email's unique identifier rather than
it's message id to make the request.

Added in 4.0.
.IP "\-\-local-port <num/range>"
Set a preferred single number or range (FROM-TO) of local port numbers to use
for the connection(s).  Note that port numbers by nature are a scarce resource
that will be busy at times so setting this range to something too narrow might
cause unnecessary connection setup failures.

Added in 7.15.2.
.IP "\-\-location-trusted"
(HTTP) Like \fI\-L, \-\-location\fP, but will allow sending the name + password to all hosts that
the site may redirect to. This may or may not introduce a security breach if
the site redirects you to a site to which you'll send your authentication info
(which is plaintext in the case of HTTP Basic authentication).

See also \fI-u, --user\fP.
.IP "\-L, \-\-location"
(HTTP) If the server reports that the requested page has moved to a different
location (indicated with a Location: header and a 3XX response code), this
option will make curl redo the request on the new place. If used together with
\fI\-i, \-\-include\fP or \fI\-I, \-\-head\fP, headers from all requested pages will be shown. When
authentication is used, curl only sends its credentials to the initial
host. If a redirect takes curl to a different host, it won't be able to
intercept the user+password. See also \fI\-\-location-trusted\fP on how to change
this. You can limit the amount of redirects to follow by using the
\fI\-\-max-redirs\fP option.

When curl follows a redirect and if the request is a POST, it will do the
following request with a GET if the HTTP response was 301, 302, or 303. If the
response code was any other 3xx code, curl will re-send the following request
using the same unmodified method.

You can tell curl to not change POST requests to GET after a 30x response by
using the dedicated options for that: \fI\-\-post301\fP, \fI\-\-post302\fP and \fI\-\-post303\fP.

The method set with \fI\-X, \-\-request\fP overrides the method curl would otherwise select
to use.
.IP "\-\-login-options <options>"
(IMAP POP3 SMTP) Specify the login options to use during server authentication.

You can use the login options to specify protocol specific options that may
be used during authentication. At present only IMAP, POP3 and SMTP support
login options. For more information about the login options please see
RFC 2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt

If this option is used several times, the last one will be used.

Added in 7.34.0.
.IP "\-\-mail-auth <address>"
(SMTP) Specify a single address. This will be used to specify the authentication
address (identity) of a submitted message that is being relayed to another
server.

See also \fI--mail-rcpt\fP and \fI--mail-from\fP. Added in 7.25.0.
.IP "\-\-mail-from <address>"
(SMTP) Specify a single address that the given mail should get sent from.

See also \fI--mail-rcpt\fP and \fI--mail-auth\fP. Added in 7.20.0.
.IP "\-\-mail-rcpt-allowfails"
(SMTP) When sending data to multiple recipients, by default curl will abort SMTP
conversation if at least one of the recipients causes RCPT TO command to
return an error.

The default behavior can be changed by passing \fI\-\-mail-rcpt-allowfails\fP
command-line option which will make curl ignore errors and proceed with the
remaining valid recipients.

In case when all recipients cause RCPT TO command to fail, curl will abort SMTP
conversation and return the error received from to the last RCPT TO command.
Added in 7.69.0.
.IP "\-\-mail-rcpt <address>"
(SMTP) Specify a single address, user name or mailing list name. Repeat this
option several times to send to multiple recipients.

When performing a mail transfer, the recipient should specify a valid email
address to send the mail to.

When performing an address verification (VRFY command), the recipient should be
specified as the user name or user name and domain (as per Section 3.5 of
RFC5321). (Added in 7.34.0)

When performing a mailing list expand (EXPN command), the recipient should be
specified using the mailing list name, such as "Friends" or "London-Office".
(Added in 7.34.0)

Added in 7.20.0.
.IP "\-M, \-\-manual"
Manual. Display the huge help text.
.IP "\-\-max-filesize <bytes>"
Specify the maximum size (in bytes) of a file to download. If the file
requested is larger than this value, the transfer will not start and curl will
return with exit code 63.

A size modifier may be used. For example, Appending 'k' or 'K' will count the
number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it
gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)

\fBNOTE\fP: The file size is not always known prior to download, and for such
files this option has no effect even if the file transfer ends up being larger
than this given limit. This concerns both FTP and HTTP transfers.

See also \fI--limit-rate\fP.
.IP "\-\-max-redirs <num>"
(HTTP) Set maximum number of redirection-followings allowed. When \fI\-L, \-\-location\fP is used,
is used to prevent curl from following redirections too much. By default, the
limit is set to 50 redirections. Set this option to \-1 to make it unlimited.

If this option is used several times, the last one will be used.
.IP "\-m, \-\-max-time <seconds>"
Maximum time in seconds that you allow the whole operation to take.  This is
useful for preventing your batch jobs from hanging for hours due to slow
networks or links going down.  Since 7.32.0, this option accepts decimal
values, but the actual timeout will decrease in accuracy as the specified
timeout increases in decimal precision.

If this option is used several times, the last one will be used.

See also \fI--connect-timeout\fP.
.IP "\-\-metalink"
This option can tell curl to parse and process a given URI as Metalink file
(both version 3 and 4 (RFC 5854) are supported) and make use of the mirrors
listed within for failover if there are errors (such as the file or server not
being available). It will also verify the hash of the file after the download
completes. The Metalink file itself is downloaded and processed in memory and
not stored in the local file system.

Example to use a remote Metalink file:

 curl \-\-metalink http://www.example.com/example.metalink

To use a Metalink file in the local file system, use FILE protocol (file://):

 curl \-\-metalink file:///example.metalink

Please note that if FILE protocol is disabled, there is no way to use a local
Metalink file at the time of this writing. Also note that if \fI\-\-metalink\fP and
\fI\-i, \-\-include\fP are used together, \-\-include will be ignored. This is because
including headers in the response will break Metalink parser and if the
headers are included in the file described in Metalink file, hash check will
fail.

\fI--metalink\fP requires that the underlying libcurl was built to support metalink. Added in 7.27.0.
.IP "\-\-negotiate"
(HTTP) Enables Negotiate (SPNEGO) authentication.

This option requires a library built with GSS-API or SSPI support. Use
\fI\-V, \-\-version\fP to see if your curl supports GSS-API/SSPI or SPNEGO.

When using this option, you must also provide a fake \fI\-u, \-\-user\fP option to activate
the authentication code properly. Sending a '-u :' is enough as the user name
and password from the \fI\-u, \-\-user\fP option aren't actually used.

If this option is used several times, only the first one is used.

See also \fI--basic\fP, \fI--ntlm\fP, \fI--anyauth\fP and \fI--proxy-negotiate\fP.
.IP "\-\-netrc-file <filename>"
This option is similar to \fI\-n, \-\-netrc\fP, except that you provide the path (absolute
or relative) to the netrc file that curl should use.  You can only specify one
netrc file per invocation. If several \fI\-\-netrc-file\fP options are provided,
the last one will be used.

It will abide by \fI\-\-netrc-optional\fP if specified.

This option overrides \fI-n, --netrc\fP. Added in 7.21.5.
.IP "\-\-netrc-optional"
Very similar to \fI\-n, \-\-netrc\fP, but this option makes the .netrc usage \fBoptional\fP
and not mandatory as the \fI\-n, \-\-netrc\fP option does.

See also \fI--netrc-file\fP. This option overrides \fI-n, --netrc\fP.
.IP "\-n, \-\-netrc"
Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's home
directory for login name and password. This is typically used for FTP on
Unix. If used with HTTP, curl will enable user authentication. See
\fInetrc(5)\fP \fIftp(1)\fP for details on the file format. Curl will not
complain if that file doesn't have the right permissions (it should not be
either world- or group-readable). The environment variable "HOME" is used to
find the home directory.

A quick and very simple example of how to setup a \fI.netrc\fP to allow curl
to FTP to the machine host.domain.com with user name \&'myself' and password
\&'secret' should look similar to:

.B "machine host.domain.com login myself password secret"
.IP "\-:, \-\-next"
Tells curl to use a separate operation for the following URL and associated
options. This allows you to send several URL requests, each with their own
specific options, for example, such as different user names or custom requests
for each.

\fI\-:, \-\-next\fP will reset all local options and only global ones will have their
values survive over to the operation following the \fI\-:, \-\-next\fP instruction. Global
options include \fI\-v, \-\-verbose\fP, \fI\-\-trace\fP, \fI\-\-trace-ascii\fP and \fI\-\-fail-early\fP.

For example, you can do both a GET and a POST in a single command line:

 curl www1.example.com \-\-next \-d postthis www2.example.com

Added in 7.36.0.
.IP "\-\-no-alpn"
(HTTPS) Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built
with an SSL library that supports ALPN. ALPN is used by a libcurl that supports
HTTP/2 to negotiate HTTP/2 support with the server during https sessions.

See also \fI--no-npn\fP and \fI--http2\fP. \fI--no-alpn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.
.IP "\-N, \-\-no-buffer"
Disables the buffering of the output stream. In normal work situations, curl
will use a standard buffered output stream that will have the effect that it
will output the data in chunks, not necessarily exactly when the data arrives.
Using this option will disable that buffering.

Note that this is the negated option name documented. You can thus use
\-\-buffer to enforce the buffering.
.IP "\-\-no-keepalive"
Disables the use of keepalive messages on the TCP connection. curl otherwise
enables them by default.

Note that this is the negated option name documented. You can thus use
\-\-keepalive to enforce keepalive.
.IP "\-\-no-npn"
(HTTPS) Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
with an SSL library that supports NPN. NPN is used by a libcurl that supports
HTTP/2 to negotiate HTTP/2 support with the server during https sessions.

See also \fI--no-alpn\fP and \fI--http2\fP. \fI--no-npn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.
.IP "\-\-no-progress-meter"
Option to switch off the progress meter output without muting or otherwise
affecting warning and informational messages like \fI\-s, \-\-silent\fP does.

Note that this is the negated option name documented. You can thus use
\-\-progress-meter to enable the progress meter again.

See also \fI-v, --verbose\fP and \fI-s, --silent\fP. Added in 7.67.0.
.IP "\-\-no-sessionid"
(TLS) Disable curl's use of SSL session-ID caching.  By default all transfers are
done using the cache. Note that while nothing should ever get hurt by
attempting to reuse SSL session-IDs, there seem to be broken SSL
implementations in the wild that may require you to disable this in order for
you to succeed.

Note that this is the negated option name documented. You can thus use
\-\-sessionid to enforce session-ID caching.

Added in 7.16.0.
.IP "\-\-noproxy <no-proxy-list>"
Comma-separated list of hosts which do not use a proxy, if one is specified.
The only wildcard is a single * character, which matches all hosts, and
effectively disables the proxy. Each name in this list is matched as either
a domain which contains the hostname, or the hostname itself. For example,
local.com would match local.com, local.com:80, and www.local.com, but not
www.notlocal.com.

Since 7.53.0, This option overrides the environment variables that disable the
proxy. If there's an environment variable disabling a proxy, you can set
noproxy list to \&"" to override it.

Added in 7.19.4.
.IP "\-\-ntlm-wb"
(HTTP) Enables NTLM much in the style \fI\-\-ntlm\fP does, but hand over the authentication
to the separate binary ntlmauth application that is executed when needed.

See also \fI--ntlm\fP and \fI--proxy-ntlm\fP.
.IP "\-\-ntlm"
(HTTP) Enables NTLM authentication. The NTLM authentication method was designed by
Microsoft and is used by IIS web servers. It is a proprietary protocol,
reverse-engineered by clever people and implemented in curl based on their
efforts. This kind of behavior should not be endorsed, you should encourage
everyone who uses NTLM to switch to a public and documented authentication
method instead, such as Digest.

If you want to enable NTLM for your proxy authentication, then use
\fI\-\-proxy-ntlm\fP.

If this option is used several times, only the first one is used.

See also \fI--proxy-ntlm\fP. \fI--ntlm\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--basic\fP and \fI--negotiate\fP and \fI--digest\fP and \fI--anyauth\fP.
.IP "\-\-oauth2-bearer <token>"
(IMAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
is used in conjunction with the user name which can be specified as part of
the \fI\-\-url\fP or \fI\-u, \-\-user\fP options.

The Bearer Token and user name are formatted according to RFC 6750.

If this option is used several times, the last one will be used.
.IP "\-\-output-dir <dir>"

This option specifies the directory in which files should be stored, when
\fI\-O, \-\-remote-name\fP or \fI\-o, \-\-output\fP are used.

The given output directory is used for all URLs and output options on the
command line, up until the first \fI\-:, \-\-next\fP.

If the specified target directory doesn't exist, the operation will fail
unless \fI\-\-create-dirs\fP is also used.

If this option is used multiple times, the last specified directory will be
used.

See also \fI-O, --remote-name\fP and \fI-J, --remote-header-name\fP. Added in 7.73.0.
.IP "\-o, \-\-output <file>"
Write output to <file> instead of stdout. If you are using {} or [] to fetch
multiple documents, you should quote the URL and you can use '#' followed by a
number in the <file> specifier. That variable will be replaced with the current
string for the URL being fetched. Like in:

 curl "http://{one,two}.example.com" \-o "file_#1.txt"

or use several variables like:

 curl "http://{site,host}.host[1-5].com" \-o "#1_#2"

You may use this option as many times as the number of URLs you have. For
example, if you specify two URLs on the same command line, you can use it like
this:

  curl \-o aa example.com \-o bb example.net

and the order of the \-o options and the URLs doesn't matter, just that the
first \-o is for the first URL and so on, so the above command line can also be
written as

  curl example.com example.net \-o aa \-o bb

See also the \fI\-\-create-dirs\fP option to create the local directories
dynamically. Specifying the output as '-' (a single dash) will force the
output to be done to stdout.

See also \fI-O, --remote-name\fP, \fI--remote-name-all\fP and \fI-J, --remote-header-name\fP.
.IP "\-\-parallel-immediate"
When doing parallel transfers, this option will instruct curl that it should
rather prefer opening up more connections in parallel at once rather than
waiting to see if new transfers can be added as multiplexed streams on another
connection.

See also \fI-Z, --parallel\fP and \fI--parallel-max\fP. Added in 7.68.0.
.IP "\-\-parallel-max"
When asked to do parallel transfers, using \fI\-Z, \-\-parallel\fP, this option controls
the maximum amount of transfers to do simultaneously.

The default is 50.

See also \fI-Z, --parallel\fP. Added in 7.66.0.
.IP "\-Z, \-\-parallel"
Makes curl perform its transfers in parallel as compared to the regular serial
manner.

Added in 7.66.0.
.IP "\-\-pass <phrase>"
(SSH TLS) Passphrase for the private key

If this option is used several times, the last one will be used.
.IP "\-\-path-as-is"
Tell curl to not handle sequences of /../ or /./ in the given URL
path. Normally curl will squash or merge them according to standards but with
this option set you tell it not to do that.

Added in 7.42.0.
.IP "\-\-pinnedpubkey <hashes>"
(TLS) Tells curl to use the specified public key file (or hashes) to verify the
peer. This can be a path to a file which contains a single public key in PEM
or DER format, or any number of base64 encoded sha256 hashes preceded by
\'sha256//\' and separated by \';\'

When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. A public key is extracted from this certificate and
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.

PEM/DER support:
  7.39.0: OpenSSL, GnuTLS and GSKit
  7.43.0: NSS and wolfSSL
  7.47.0: mbedtls
sha256 support:
  7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL
  7.47.0: mbedtls
Other SSL backends not supported.

If this option is used several times, the last one will be used.
.IP "\-\-post301"
(HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST requests into GET
requests when following a 301 redirection. The non-RFC behavior is ubiquitous
in web browsers, so curl does the conversion by default to maintain
consistency. However, a server may require a POST to remain a POST after such
a redirection. This option is meaningful only when using \fI\-L, \-\-location\fP.

See also \fI--post302\fP, \fI--post303\fP and \fI-L, --location\fP. Added in 7.17.1.
.IP "\-\-post302"
(HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST requests into GET
requests when following a 302 redirection. The non-RFC behavior is ubiquitous
in web browsers, so curl does the conversion by default to maintain
consistency. However, a server may require a POST to remain a POST after such
a redirection. This option is meaningful only when using \fI\-L, \-\-location\fP.

See also \fI--post301\fP, \fI--post303\fP and \fI-L, --location\fP. Added in 7.19.1.
.IP "\-\-post303"
(HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST requests into GET
requests when following 303 redirections. A server may require a POST to
remain a POST after a 303 redirection. This option is meaningful only when
using \fI\-L, \-\-location\fP.

See also \fI--post302\fP, \fI--post301\fP and \fI-L, --location\fP. Added in 7.26.0.
.IP "\-\-preproxy [protocol://]host[:port]"
Use the specified SOCKS proxy before connecting to an HTTP or HTTPS \fI\-x, \-\-proxy\fP. In
such a case curl first connects to the SOCKS proxy and then connects (through
SOCKS) to the HTTP or HTTPS proxy. Hence pre proxy.

The pre proxy string should be specified with a protocol:// prefix to specify
alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
socks5h:// to request the specific SOCKS version to be used. No protocol
specified will make curl default to SOCKS4.

If the port number is not specified in the proxy string, it is assumed to be
1080.

User and password that might be provided in the proxy string are URL decoded
by curl. This allows you to pass in special characters such as @ by using %40
or pass in a colon with %3a.

If this option is used several times, the last one will be used.

Added in 7.52.0.
.IP "\-#, \-\-progress-bar"
Make curl display transfer progress as a simple progress bar instead of the
standard, more informational, meter.

This progress bar draws a single line of '#' characters across the screen and
shows a percentage if the transfer size is known. For transfers without a
known size, there will be space ship (-=o=-) that moves back and forth but
only while data is being transferred, with a set of flying hash sign symbols on
top.
.IP "\-\-proto-default <protocol>"
Tells curl to use \fIprotocol\fP for any URL missing a scheme name.

Example:

 curl \-\-proto-default https ftp.mozilla.org

An unknown or unsupported protocol causes error
\fICURLE_UNSUPPORTED_PROTOCOL\fP (1).

This option does not change the default proxy protocol (http).

Without this option curl would make a guess based on the host, see \fI\-\-url\fP for
details.

Added in 7.45.0.
.IP "\-\-proto-redir <protocols>"
Tells curl to limit what protocols it may use on redirect. Protocols denied by
\fI\-\-proto\fP are not overridden by this option. See \-\-proto for how protocols are
represented.

Example, allow only HTTP and HTTPS on redirect:

 curl \-\-proto-redir \-all,http,https http://example.com

By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect (7.65.2).
Older versions of curl allowed all protocols on redirect except several
disabled for security reasons: Since 7.19.4 FILE and SCP are disabled, and
since 7.40.0 SMB and SMBS are also disabled. Specifying \fIall\fP or \fI+all\fP
enables all protocols on redirect, including those disabled for security.

Added in 7.20.2.
.IP "\-\-proto <protocols>"
Tells curl to limit what protocols it may use in the transfer. Protocols are
evaluated left to right, are comma separated, and are each a protocol name or
\&'all', optionally prefixed by zero or more modifiers. Available modifiers are:
.RS
.TP 3
.B +
Permit this protocol in addition to protocols already permitted (this is
the default if no modifier is used).
.TP
.B \-
Deny this protocol, removing it from the list of protocols already permitted.
.TP
.B =
Permit only this protocol (ignoring the list already permitted), though
subject to later modification by subsequent entries in the comma separated
list.
.RE
.IP
For example:
.RS
.TP 15
.B \fI\-\-proto\fP \-ftps
uses the default protocols, but disables ftps
.TP
.B  \fI\-\-proto\fP \-all,https,+http
only enables http and https
.TP
.B \fI\-\-proto\fP =http,https
also only enables http and https
.RE

Unknown protocols produce a warning. This allows scripts to safely rely on
being able to disable potentially dangerous protocols, without relying upon
support for that protocol being built into curl to avoid an error.

This option can be used multiple times, in which case the effect is the same
as concatenating the protocols into one instance of the option.

See also \fI--proto-redir\fP and \fI--proto-default\fP. Added in 7.20.2.
.IP "\-\-proxy-anyauth"
Tells curl to pick a suitable authentication method when communicating with
the given HTTP proxy. This might cause an extra request/response round-trip.

See also \fI-x, --proxy\fP, \fI--proxy-basic\fP and \fI--proxy-digest\fP. Added in 7.13.2.
.IP "\-\-proxy-basic"
Tells curl to use HTTP Basic authentication when communicating with the given
proxy. Use \fI\-\-basic\fP for enabling HTTP Basic with a remote host. Basic is the
default authentication method curl uses with proxies.

See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-digest\fP.
.IP "\-\-proxy-cacert <file>"
Same as \fI\-\-cacert\fP but used in HTTPS proxy context.

See also \fI--proxy-capath\fP, \fI--cacert\fP, \fI--capath\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "\-\-proxy-capath <dir>"
Same as \fI\-\-capath\fP but used in HTTPS proxy context.

See also \fI--proxy-cacert\fP, \fI-x, --proxy\fP and \fI--capath\fP. Added in 7.52.0.
.IP "\-\-proxy-cert-type <type>"
Same as \fI\-\-cert-type\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-cert <cert[:passwd]>"
Same as \fI\-E, \-\-cert\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-ciphers <list>"
Same as \fI\-\-ciphers\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-crlfile <file>"
Same as \fI\-\-crlfile\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-digest"
Tells curl to use HTTP Digest authentication when communicating with the given
proxy. Use \fI\-\-digest\fP for enabling HTTP Digest with a remote host.

See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
.IP "\-\-proxy-header <header/@file>"
(HTTP) Extra header to include in the request when sending HTTP to a proxy. You may
specify any number of extra headers. This is the equivalent option to \fI\-H, \-\-header\fP
but is for proxy communication only like in CONNECT requests when you want a
separate header sent to the proxy to what is sent to the actual remote host.

curl will make sure that each header you add/replace is sent with the proper
end-of-line marker, you should thus \fBnot\fP add that as a part of the header
content: do not add newlines or carriage returns, they will only mess things
up for you.

Headers specified with this option will not be included in requests that curl
knows will not be sent to a proxy.

Starting in 7.55.0, this option can take an argument in @filename style, which
then adds a header for each line in the input file. Using @- will make curl
read the header file from stdin.

This option can be used multiple times to add/replace/remove multiple headers.

Added in 7.37.0.
.IP "\-\-proxy-insecure"
Same as \fI\-k, \-\-insecure\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-key-type <type>"
Same as \fI\-\-key-type\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-key <key>"
Same as \fI\-\-key\fP but used in HTTPS proxy context.
.IP "\-\-proxy-negotiate"
Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating
with the given proxy. Use \fI\-\-negotiate\fP for enabling HTTP Negotiate (SPNEGO)
with a remote host.

See also \fI--proxy-anyauth\fP and \fI--proxy-basic\fP. Added in 7.17.1.
.IP "\-\-proxy-ntlm"
Tells curl to use HTTP NTLM authentication when communicating with the given
proxy. Use \fI\-\-ntlm\fP for enabling NTLM with a remote host.

See also \fI--proxy-negotiate\fP and \fI--proxy-anyauth\fP.
.IP "\-\-proxy-pass <phrase>"
Same as \fI\-\-pass\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-pinnedpubkey <hashes>"
(TLS) Tells curl to use the specified public key file (or hashes) to verify the
proxy. This can be a path to a file which contains a single public key in PEM
or DER format, or any number of base64 encoded sha256 hashes preceded by
\'sha256//\' and separated by \';\'

When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. A public key is extracted from this certificate and
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.

If this option is used several times, the last one will be used.
.IP "\-\-proxy-service-name <name>"
This option allows you to change the service name for proxy negotiation.

Added in 7.43.0.
.IP "\-\-proxy-ssl-allow-beast"
Same as \fI\-\-ssl-allow-beast\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-tls13-ciphers <ciphersuite list>"
(TLS) Specifies which cipher suites to use in the connection to your HTTPS proxy
when it negotiates TLS 1.3. The list of ciphers suites must specify valid
ciphers. Read up on TLS 1.3 cipher suite details on this URL:

 https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
cipher suites by using the \fI\-\-proxy-ciphers\fP option.

If this option is used several times, the last one will be used.
.IP "\-\-proxy-tlsauthtype <type>"
Same as \fI\-\-tlsauthtype\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-tlspassword <string>"
Same as \fI\-\-tlspassword\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-tlsuser <name>"
Same as \fI\-\-tlsuser\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-\-proxy-tlsv1"
Same as \fI\-1, \-\-tlsv1\fP but used in HTTPS proxy context.

Added in 7.52.0.
.IP "\-U, \-\-proxy-user <user:password>"
Specify the user name and password to use for proxy authentication.

If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM
authentication then you can tell curl to select the user name and password
from your environment by specifying a single colon with this option: "-U :".

On systems where it works, curl will hide the given option argument from
process listings. This is not enough to protect credentials from possibly
getting seen by other users on the same system as they will still be visible
for a brief moment before cleared. Such sensitive data should be retrieved
from a file instead or similar and never used in clear text in a command line.

If this option is used several times, the last one will be used.
.IP "\-x, \-\-proxy [protocol://]host[:port]"
Use the specified proxy.

The proxy string can be specified with a protocol:// prefix. No protocol
specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://,
socks5:// or socks5h:// to request a specific SOCKS version to be used.
(The protocol support was added in curl 7.21.7)

2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
This option overrides existing environment variables that set the proxy to
use. If there's an environment variable setting a proxy, you can set proxy to
\&"" to override it.

All operations that are performed over an HTTP proxy will transparently be
converted to HTTP. It means that certain protocol specific operations might
not be available. This is not the case if you can tunnel through the proxy, as
one with the \fI-p, --proxytunnel\fP option.

User and password that might be provided in the proxy string are URL decoded
by curl. This allows you to pass in special characters such as @ by using %40
or pass in a colon with %3a.

The proxy host can be specified the exact same way as the proxy environment
variables, including the protocol prefix (http://) and the embedded user +
password.

If this option is used several times, the last one will be used.
.IP "--proxy1.0 <host[:port]>"
Use the specified HTTP 1.0 proxy. If the port number is not specified, it is
assumed at port 1080.

The only difference between this and the HTTP proxy option \fI-x, --proxy\fP, is that
attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol
instead of the default HTTP 1.1.
.IP "-p, --proxytunnel"
When an HTTP proxy is used \fI-x, --proxy\fP, this option will make curl tunnel through
the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and
requires that the proxy allows direct connect to the remote port number curl
wants to tunnel through to.

To suppress proxy CONNECT response headers when curl is set to output headers
use \fI--suppress-connect-headers\fP.

See also \fI-x, --proxy\fP.
.IP "--pubkey <key>"
(SFTP SCP) Public key file name. Allows you to provide your public key in this separate
file.

If this option is used several times, the last one will be used.

(As of 7.39.0, curl attempts to automatically extract the public key from the
private key file, so passing this option is generally not required. Note that
this public key extraction requires libcurl to be linked against a copy of
libssh2 1.2.8 or higher that is itself linked against OpenSSL.)
.IP "-Q, --quote"
(FTP SFTP) 
Send an arbitrary command to the remote FTP or SFTP server. Quote commands are
sent BEFORE the transfer takes place (just after the initial PWD command in an
FTP transfer, to be exact). To make commands take place after a successful
transfer, prefix them with a dash '-'.  To make commands be sent after curl
has changed the working directory, just before the transfer command(s), prefix
the command with a '+' (this is only supported for FTP). You may specify any







|










|



|


|
|





|


|









|







2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
This option overrides existing environment variables that set the proxy to
use. If there's an environment variable setting a proxy, you can set proxy to
\&"" to override it.

All operations that are performed over an HTTP proxy will transparently be
converted to HTTP. It means that certain protocol specific operations might
not be available. This is not the case if you can tunnel through the proxy, as
one with the \fI\-p, \-\-proxytunnel\fP option.

User and password that might be provided in the proxy string are URL decoded
by curl. This allows you to pass in special characters such as @ by using %40
or pass in a colon with %3a.

The proxy host can be specified the exact same way as the proxy environment
variables, including the protocol prefix (http://) and the embedded user +
password.

If this option is used several times, the last one will be used.
.IP "\-\-proxy1.0 <host[:port]>"
Use the specified HTTP 1.0 proxy. If the port number is not specified, it is
assumed at port 1080.

The only difference between this and the HTTP proxy option \fI\-x, \-\-proxy\fP, is that
attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol
instead of the default HTTP 1.1.
.IP "\-p, \-\-proxytunnel"
When an HTTP proxy is used \fI\-x, \-\-proxy\fP, this option will make curl tunnel through
the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and
requires that the proxy allows direct connect to the remote port number curl
wants to tunnel through to.

To suppress proxy CONNECT response headers when curl is set to output headers
use \fI\-\-suppress-connect-headers\fP.

See also \fI-x, --proxy\fP.
.IP "\-\-pubkey <key>"
(SFTP SCP) Public key file name. Allows you to provide your public key in this separate
file.

If this option is used several times, the last one will be used.

(As of 7.39.0, curl attempts to automatically extract the public key from the
private key file, so passing this option is generally not required. Note that
this public key extraction requires libcurl to be linked against a copy of
libssh2 1.2.8 or higher that is itself linked against OpenSSL.)
.IP "\-Q, \-\-quote"
(FTP SFTP) 
Send an arbitrary command to the remote FTP or SFTP server. Quote commands are
sent BEFORE the transfer takes place (just after the initial PWD command in an
FTP transfer, to be exact). To make commands take place after a successful
transfer, prefix them with a dash '-'.  To make commands be sent after curl
has changed the working directory, just before the transfer command(s), prefix
the command with a '+' (this is only supported for FTP). You may specify any
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
The rm command removes the file specified by the file operand.
.IP "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
.IP "symlink source_file target_file"
See ln.
.RE
.IP "--random-file <file>"
Specify the path name to file containing what will be considered as random
data. The data may be used to seed the random engine for SSL connections.  See
also the \fI--egd-file\fP option.
.IP "-r, --range <range>"
(HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP
server or a local FILE. Ranges can be specified in a number of ways.
.RS
.TP 10
.B 0-499
specifies the first 500 bytes
.TP
.B 500-999
specifies the second 500 bytes
.TP
.B -500
specifies the last 500 bytes
.TP
.B 9500-
specifies the bytes from offset 9500 and forward
.TP
.B 0-0,-1
specifies the first and last byte only(*)(HTTP)







|


|
|










|







2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
The rm command removes the file specified by the file operand.
.IP "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
.IP "symlink source_file target_file"
See ln.
.RE
.IP "\-\-random-file <file>"
Specify the path name to file containing what will be considered as random
data. The data may be used to seed the random engine for SSL connections.  See
also the \fI\-\-egd-file\fP option.
.IP "\-r, \-\-range <range>"
(HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP
server or a local FILE. Ranges can be specified in a number of ways.
.RS
.TP 10
.B 0-499
specifies the first 500 bytes
.TP
.B 500-999
specifies the second 500 bytes
.TP
.B \-500
specifies the last 500 bytes
.TP
.B 9500-
specifies the bytes from offset 9500 and forward
.TP
.B 0-0,-1
specifies the first and last byte only(*)(HTTP)
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361








2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392

2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
document.

FTP and SFTP range downloads only support the simple 'start-stop' syntax
(optionally with one of the numbers omitted). FTP use depends on the extended
FTP command SIZE.

If this option is used several times, the last one will be used.
.IP "--raw"
(HTTP) When used, it disables all internal HTTP decoding of content or transfer
encodings and instead makes them passed on unaltered, raw.

Added in 7.16.2.
.IP "-e, --referer <URL>"
(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set
with the \fI-H, --header\fP flag of course.  When used with \fI-L, --location\fP you can append
";auto" to the \fI-e, --referer\fP URL to make curl automatically set the previous URL
when it follows a Location: header. The \&";auto" string can be used alone,
even if you don't set an initial \fI-e, --referer\fP.

If this option is used several times, the last one will be used.

See also \fI-A, --user-agent\fP and \fI-H, --header\fP.
.IP "-J, --remote-header-name"
(HTTP) This option tells the \fI-O, --remote-name\fP option to use the server-specified
Content-Disposition filename instead of extracting a filename from the URL.

If the server specifies a file name and a file with that name already exists
in the current working directory it will not be overwritten and an error will
occur. If the server doesn't specify a file name then this option has no
effect.

There's no attempt to decode %-sequences (yet) in the provided file name, so
this option may provide you with rather unexpected file names.

\fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
rogue server could send you the name of a DLL or other file that could possibly
be loaded automatically by Windows or some third party software.
.IP "--remote-name-all"
This option changes the default action for all given URLs to be dealt with as
if \fI-O, --remote-name\fP were used for each one. So if you want to disable that for a
specific URL after \fI--remote-name-all\fP has been used, you must use "-o -" or
--no-remote-name.

Added in 7.19.0.
.IP "-O, --remote-name"
Write output to a local file named like the remote file we get. (Only the file
part of the remote file is used, the path is cut off.)

The file will be saved in the current working directory. If you want the file
saved in a different directory, make sure you change the current working
directory before invoking curl with this option.

The remote file name to use for saving is extracted from the given URL,
nothing else, and if it already exists it will be overwritten. If you want the
server to be able to choose the file name refer to \fI-J, --remote-header-name\fP which
can be used in addition to this option. If the server chooses a file name and
that name already exists it will not be overwritten.

There is no URL decoding done on the file name. If it has %20 or other URL
encoded parts of the name, they will end up as-is as file name.

You may use this option as many times as the number of URLs you have.
.IP "-R, --remote-time"
When used, this will make curl attempt to figure out the timestamp of the
remote file, and if that is available make the local file get that same
timestamp.
.IP "--request-target"
(HTTP) Tells curl to use an alternative "target" (path) instead of using the path as
provided in the URL. Particularly useful when wanting to issue HTTP requests
without leading slash or other data that doesn't follow the regular URL
pattern, like "OPTIONS *".

Added in 7.55.0.
.IP "-X, --request <command>"
(HTTP) Specifies a custom request method to use when communicating with the
HTTP server.  The specified request method will be used instead of the method
otherwise used (which defaults to GET). Read the HTTP 1.1 specification for
details and explanations. Common additional HTTP requests include PUT and
DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and
more.

Normally you don't need this option. All sorts of GET, HEAD, POST and PUT
requests are rather invoked by using dedicated command line options.

This option only changes the actual word used in the HTTP request, it does not
alter the way curl behaves. So for example if you want to make a proper HEAD
request, using -X HEAD will not suffice. You need to use the \fI-I, --head\fP option.

The method string you set with \fI-X, --request\fP will be used for all requests, which
if you for example use \fI-L, --location\fP may cause unintended side-effects when curl
doesn't change request method according to the HTTP 30x response codes - and
similar.

(FTP)
Specifies a custom FTP command to use instead of LIST when doing file lists
with FTP.

(POP3)
Specifies a custom POP3 command to use instead of LIST or RETR. (Added in
7.26.0)

(IMAP)
Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0)

(SMTP)
Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0)

If this option is used several times, the last one will be used.
.IP "--resolve <[+]host:port:addr[,addr]...>"
Provide a custom address for a specific host and port pair. Using this, you
can make the curl requests(s) use a specified address and prevent the
otherwise normally resolved address to be used. Consider it a sort of
/etc/hosts alternative provided on the command line. The port number should be
the number used for the specific protocol the host will be used for. It means
you need several entries if you want to provide address for the same host but
different ports.

By specifying '*' as host you can tell curl to resolve any host and specific
port pair to the specified address. Wildcard is resolved last so any \fI--resolve\fP
with a specific host and port will be used first.

The provided address set by this option will be used even if \fI-4, --ipv4\fP or \fI-6, --ipv6\fP
is set to make curl use another IP version.

By prefixing the host with a '+' you can make the entry time out after curl's
default timeout (1 minute). Note that this will only make sense for long
running parallel transfers with a lot of files. In such cases, if this option
is used curl will try to resolve the host as it normally would once the
timeout has expired.

Support for providing the IP address within [brackets] was added in 7.57.0.

Support for providing multiple IP addresses per entry was added in 7.59.0.

Support for resolving with wildcard was added in 7.64.0.

Support for the '+' prefix was was added in 7.75.0.

This option can be used many times to add many host names to resolve.

Added in 7.21.3.
.IP "--retry-all-errors"
Retry on any error. This option is used together with \fI--retry\fP.

This option is the "sledgehammer" of retrying. Do not use this option by
default (eg in curlrc), there may be unintended consequences such as sending or
receiving duplicate data. Do not use with redirected input or output. You'd be
much better off handling your unique problems in shell script. Please read the
example below.

Warning: For server compatibility curl attempts to retry failed flaky transfers
as close as possible to how they were started, but this is not possible with
redirected input or output. For example, before retrying it removes output data
from a failed partial transfer that was written to an output file. However this
is not true of data redirected to a | pipe or > file, which are not reset. We
strongly suggest don't parse or record output via redirect in combination with
this option, since you may receive duplicate data.









Added in 7.71.0.
.IP "--retry-connrefused"
In addition to the other conditions, consider ECONNREFUSED as a transient
error too for \fI--retry\fP. This option is used together with --retry.

Added in 7.52.0.
.IP "--retry-delay <seconds>"
Make curl sleep this amount of time before each retry when a transfer has
failed with a transient error (it changes the default backoff time algorithm
between retries). This option is only interesting if \fI--retry\fP is also
used. Setting this delay to zero will make curl use the default backoff time.

If this option is used several times, the last one will be used.

Added in 7.12.3.
.IP "--retry-max-time <seconds>"
The retry timer is reset before the first transfer attempt. Retries will be
done as usual (see \fI--retry\fP) as long as the timer hasn't reached this given
limit. Notice that if the timer hasn't reached the limit, the request will be
made and while performing, it may take longer than this given time period. To
limit a single request\'s maximum time, use \fI-m, --max-time\fP.  Set this option to
zero to not timeout retries.

If this option is used several times, the last one will be used.

Added in 7.12.3.
.IP "--retry <num>"
If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0
makes curl do no retries (which is the default). Transient error means either:
a timeout, an FTP 4xx response code or an HTTP 408, 429 or 5xx response code.


When curl is about to retry a transfer, it will first wait one second and then
for all forthcoming retries it will double the waiting time until it reaches
10 minutes which then will be the delay between the rest of the retries.  By
using \fI--retry-delay\fP you disable this exponential backoff algorithm. See also
\fI--retry-max-time\fP to limit the total time allowed for retries.

Since curl 7.66.0, curl will comply with the Retry-After: response header if
one was present to know when to issue the next retry.

If this option is used several times, the last one will be used.

Added in 7.12.3.
.IP "--sasl-authzid <identity>"
Use this authorisation identity (authzid), during SASL PLAIN authentication,
in addition to the authentication identity (authcid) as specified by \fI-u, --user\fP.

If the option isn't specified, the server will derive the authzid from the
authcid, but if specified, and depending on the server implementation, it may
be used to access another user's inbox, that the user has been granted access
to, or a shared mailbox for example.

Added in 7.66.0.
.IP "--sasl-ir"
Enable initial response in SASL authentication.

Added in 7.31.0.
.IP "--service-name <name>"
This option allows you to change the service name for SPNEGO.

Examples: \fI--negotiate\fP \fI--service-name\fP sockd would use sockd/server-name.

Added in 7.43.0.
.IP "-S, --show-error"
When used with \fI-s, --silent\fP, it makes curl show an error message if it fails.

See also \fI--no-progress-meter\fP.
.IP "-s, --silent"
Silent or quiet mode. Don't show progress meter or error messages.  Makes Curl
mute. It will still output the data you ask for, potentially even to the
terminal/stdout unless you redirect it.

Use \fI-S, --show-error\fP in addition to this option to disable progress meter but
still show error messages.

See also \fI-v, --verbose\fP, \fI--stderr\fP and \fI--no-progress-meter\fP.
.IP "--socks4 <host[:port]>"
Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080.

This option overrides any previous use of \fI-x, --proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks4 proxy
with \fI-x, --proxy\fP using a socks4:// protocol prefix.

Since 7.52.0, \fI--preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI-x, --proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

Added in 7.15.2.
.IP "--socks4a <host[:port]>"
Use the specified SOCKS4a proxy. If the port number is not specified, it is
assumed at port 1080.

This option overrides any previous use of \fI-x, --proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks4a proxy
with \fI-x, --proxy\fP using a socks4a:// protocol prefix.

Since 7.52.0, \fI--preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI-x, --proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

Added in 7.18.0.
.IP "--socks5-basic"
Tells curl to use username/password authentication when connecting to a SOCKS5
proxy.  The username/password authentication is enabled by default.  Use
\fI--socks5-gssapi\fP to force GSS-API authentication to SOCKS5 proxies.

Added in 7.55.0.
.IP "--socks5-gssapi-nec"
As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961
says in section 4.3/4.4 it should be protected, but the NEC reference
implementation does not.  The option \fI--socks5-gssapi-nec\fP allows the
unprotected exchange of the protection mode negotiation.

Added in 7.19.4.
.IP "--socks5-gssapi-service <name>"
The default service name for a socks server is rcmd/server-fqdn. This option
allows you to change it.

Examples: \fI--socks5\fP proxy-name \fI--socks5-gssapi-service\fP sockd would use
sockd/proxy-name \fI--socks5\fP proxy-name \fI--socks5-gssapi-service\fP sockd/real-name
would use sockd/real-name for cases where the proxy-name does not match the
principal name.

Added in 7.19.4.
.IP "--socks5-gssapi"
Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
The GSS-API authentication is enabled by default (if curl is compiled with
GSS-API support).  Use \fI--socks5-basic\fP to force username/password authentication
to SOCKS5 proxies.

Added in 7.55.0.
.IP "--socks5-hostname <host[:port]>"
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
the port number is not specified, it is assumed at port 1080.

This option overrides any previous use of \fI-x, --proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks5
hostname proxy with \fI-x, --proxy\fP using a socks5h:// protocol prefix.

Since 7.52.0, \fI--preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI-x, --proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

Added in 7.18.0.
.IP "--socks5 <host[:port]>"
Use the specified SOCKS5 proxy - but resolve the host name locally. If the
port number is not specified, it is assumed at port 1080.

This option overrides any previous use of \fI-x, --proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks5 proxy
with \fI-x, --proxy\fP using a socks5:// protocol prefix.

Since 7.52.0, \fI--preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI-x, --proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

This option (as well as \fI--socks4\fP) does not work with IPV6, FTPS or LDAP.

Added in 7.18.0.
.IP "-Y, --speed-limit <speed>"
If a download is slower than this given speed (in bytes per second) for
speed-time seconds it gets aborted. speed-time is set with \fI-y, --speed-time\fP and is
30 if not set.

If this option is used several times, the last one will be used.
.IP "-y, --speed-time <seconds>"
If a download is slower than speed-limit bytes per second during a speed-time
period, the download gets aborted. If speed-time is used, the default
speed-limit will be 1 unless set with \fI-Y, --speed-limit\fP.

This option controls transfers and thus will not affect slow connects etc. If
this is a concern for you, try the \fI--connect-timeout\fP option.

If this option is used several times, the last one will be used.
.IP "--ssl-allow-beast"
This option tells curl to not work around a security flaw in the SSL3 and
TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer may
use workarounds known to cause interoperability problems with some older SSL
implementations. WARNING: this option loosens the SSL security, and by using
this flag you ask for exactly that.

Added in 7.25.0.
.IP "--ssl-no-revoke"
(Schannel) This option tells curl to disable certificate revocation checks.
WARNING: this option loosens the SSL security, and by using this flag you ask
for exactly that.

Added in 7.44.0.
.IP "--ssl-reqd"
(FTP IMAP POP3 SMTP) Require SSL/TLS for the connection.  Terminates the connection if the server
doesn't support SSL/TLS.

This option was formerly known as --ftp-ssl-reqd.

Added in 7.20.0.
.IP "--ssl-revoke-best-effort"
(Schannel) This option tells curl to ignore certificate revocation checks when
they failed due to missing/offline distribution points for the revocation check
lists.

Added in 7.70.0.
.IP "--ssl"
(FTP IMAP POP3 SMTP) 
Try to use SSL/TLS for the connection.  Reverts to a non-secure connection if
the server doesn't support SSL/TLS.  See also \fI--ftp-ssl-control\fP and \fI--ssl-reqd\fP
for different levels of encryption required.

This option was formerly known as --ftp-ssl (Added in 7.11.0). That option
name can still be used but will be removed in a future version.

Added in 7.20.0.
.IP "-2, --sslv2"
(SSL) Forces curl to use SSL version 2 when negotiating with a remote SSL
server. Sometimes curl is built without SSLv2 support. SSLv2 is widely
considered insecure (see RFC 6176).

See also \fI--http1.1\fP and \fI--http2\fP. \fI-2, --sslv2\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-3, --sslv3\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
.IP "-3, --sslv3"
(SSL) Forces curl to use SSL version 3 when negotiating with a remote SSL
server. Sometimes curl is built without SSLv3 support. SSLv3 is widely
considered insecure (see RFC 7568).

See also \fI--http1.1\fP and \fI--http2\fP. \fI-3, --sslv3\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-2, --sslv2\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
.IP "--stderr"
Redirect all writes to stderr to the specified file instead. If the file name
is a plain '-', it is instead written to stdout.

If this option is used several times, the last one will be used.

See also \fI-v, --verbose\fP and \fI-s, --silent\fP.
.IP "--styled-output"
Enables the automatic use of bold font styles when writing HTTP headers to the
terminal. Use --no-styled-output to switch them off.

Added in 7.61.0.
.IP "--suppress-connect-headers"
When \fI-p, --proxytunnel\fP is used and a CONNECT request is made don't output proxy
CONNECT response headers. This option is meant to be used with \fI-D, --dump-header\fP or
\fI-i, --include\fP which are used to show protocol headers in the output. It has no
effect on debug options such as \fI-v, --verbose\fP or \fI--trace\fP, or any statistics.

See also \fI-D, --dump-header\fP, \fI-i, --include\fP and \fI-p, --proxytunnel\fP.
.IP "--tcp-fastopen"
Enable use of TCP Fast Open (RFC7413).

Added in 7.49.0.
.IP "--tcp-nodelay"
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
details about this option.

Since 7.50.2, curl sets this option by default and you need to explicitly
switch it off if you don't want it on.

Added in 7.11.2.
.IP "-t, --telnet-option <opt=val>"
Pass options to the telnet protocol. Supported options are:

TTYPE=<term> Sets the terminal type.

XDISPLOC=<X display> Sets the X display location.

NEW_ENV=<var,val> Sets an environment variable.
.IP "--tftp-blksize <value>"
(TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that curl will
try to use when transferring data to or from a TFTP server. By default 512
bytes will be used.

If this option is used several times, the last one will be used.

Added in 7.20.0.
.IP "--tftp-no-options"
(TFTP) Tells curl not to send TFTP options requests.

This option improves interop with some legacy servers that do not acknowledge
or properly implement TFTP options. When this option is used \fI--tftp-blksize\fP is
ignored.

Added in 7.48.0.
.IP "-z, --time-cond <time>"
(HTTP FTP) Request a file that has been modified later than the given time and date, or
one that has been modified before that time. The <date expression> can be all
sorts of date strings or if it doesn't match any internal ones, it is taken as
a filename and tries to get the modification date (mtime) from <file>
instead. See the \fIcurl_getdate(3)\fP man pages for date expression details.

Start the date expression with a dash (-) to make it request for a document
that is older than the given date/time, default is a document that is newer
than the specified date/time.

If this option is used several times, the last one will be used.
.IP "--tls-max <VERSION>"
(SSL) VERSION defines maximum supported TLS version. The minimum acceptable version
is set by tlsv1.0, tlsv1.1, tlsv1.2 or tlsv1.3.

If the connection is done without TLS, this option has no effect. This
includes QUIC-using (HTTP/3) transfers.

.RS
.IP "default"
Use up to recommended TLS version.
.IP "1.0"
Use up to TLSv1.0.
.IP "1.1"
Use up to TLSv1.1.
.IP "1.2"
Use up to TLSv1.2.
.IP "1.3"
Use up to TLSv1.3.
.RE

See also \fI--tlsv1.0\fP, \fI--tlsv1.1\fP, \fI--tlsv1.2\fP and \fI--tlsv1.3\fP. \fI--tls-max\fP requires that the underlying libcurl was built to support TLS. Added in 7.54.0.
.IP "--tls13-ciphers <ciphersuite list>"
(TLS) Specifies which cipher suites to use in the connection if it negotiates TLS
1.3. The list of ciphers suites must specify valid ciphers. Read up on TLS 1.3
cipher suite details on this URL:

 https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
cipher suites by using the \fI--ciphers\fP option.

If this option is used several times, the last one will be used.
.IP "--tlsauthtype <type>"
Set TLS authentication type. Currently, the only supported option is "SRP",
for TLS-SRP (RFC 5054). If \fI--tlsuser\fP and \fI--tlspassword\fP are specified but
\fI--tlsauthtype\fP is not, then this option defaults to "SRP".  This option works
only if the underlying libcurl is built with TLS-SRP support, which requires
OpenSSL or GnuTLS with TLS-SRP support.

Added in 7.21.4.
.IP "--tlspassword"
Set password for use with the TLS authentication method specified with
\fI--tlsauthtype\fP. Requires that \fI--tlsuser\fP also be set.

This doesn't work with TLS 1.3.

Added in 7.21.4.
.IP "--tlsuser <name>"
Set username for use with the TLS authentication method specified with
\fI--tlsauthtype\fP. Requires that \fI--tlspassword\fP also is set.

This doesn't work with TLS 1.3.

Added in 7.21.4.
.IP "--tlsv1.0"
(TLS) Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.0,
but behavior was inconsistent depending on the TLS library. Use \fI--tls-max\fP if
you want to set a maximum TLS version.

Added in 7.34.0.
.IP "--tlsv1.1"
(TLS) Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.1,
but behavior was inconsistent depending on the TLS library. Use \fI--tls-max\fP if
you want to set a maximum TLS version.

Added in 7.34.0.
.IP "--tlsv1.2"
(TLS) Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.2,
but behavior was inconsistent depending on the TLS library. Use \fI--tls-max\fP if
you want to set a maximum TLS version.

Added in 7.34.0.
.IP "--tlsv1.3"
(TLS) Forces curl to use TLS version 1.3 or later when connecting to a remote TLS
server.

If the connection is done without TLS, this option has no effect. This
includes QUIC-using (HTTP/3) transfers.

Note that TLS 1.3 is not supported by all TLS backends.

Added in 7.52.0.
.IP "-1, --tlsv1"
(SSL) Tells curl to use at least TLS version 1.x when negotiating with a remote TLS
server. That means TLS version 1.0 or higher

See also \fI--http1.1\fP and \fI--http2\fP. \fI-1, --tlsv1\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--tlsv1.1\fP and \fI--tlsv1.2\fP and \fI--tlsv1.3\fP.
.IP "--tr-encoding"
(HTTP) Request a compressed Transfer-Encoding response using one of the algorithms
curl supports, and uncompress the data while receiving it.

Added in 7.21.6.
.IP "--trace-ascii <file>"
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
the output sent to stdout.

This is very similar to \fI--trace\fP, but leaves out the hex part and only shows
the ASCII part of the dump. It makes smaller output that might be easier to
read for untrained humans.

If this option is used several times, the last one will be used.

This option overrides \fI--trace\fP and \fI-v, --verbose\fP.
.IP "--trace-time"
Prepends a time stamp to each trace or verbose line that curl displays.

Added in 7.14.0.
.IP "--trace <file>"
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
the output sent to stdout. Use "%" as filename to have the output sent to
stderr.

If this option is used several times, the last one will be used.

This option overrides \fI-v, --verbose\fP and \fI--trace-ascii\fP.
.IP "--unix-socket <path>"
(HTTP) Connect through this Unix domain socket, instead of using the network.

Added in 7.40.0.
.IP "-T, --upload-file <file>"
This transfers the specified local file to the remote URL. If there is no file
part in the specified URL, curl will append the local file name. NOTE that you
must use a trailing / on the last directory to really prove to Curl that there
is no file name or curl will think that your last directory name is the remote
file name to use. That will most likely cause the upload operation to fail. If
this is used on an HTTP(S) server, the PUT command will be used.

Use the file name "-" (a single dash) to use stdin instead of a given file.
Alternately, the file name "." (a single period) may be specified instead
of "-" to use stdin in non-blocking mode to allow reading server output
while stdin is being uploaded.

You can specify one \fI-T, --upload-file\fP for each URL on the command line. Each
\fI-T, --upload-file\fP + URL pair specifies what to upload and to where. curl also
supports "globbing" of the \fI-T, --upload-file\fP argument, meaning that you can upload
multiple files to a single URL by using the same URL globbing style supported
in the URL, like this:

 curl --upload-file "{file1,file2}" http://www.example.com

or even

 curl -T "img[1-1000].png" ftp://ftp.example.com/upload/

When uploading to an SMTP server: the uploaded data is assumed to be RFC 5322
formatted. It has to feature the necessary set of headers and mail body
formatted correctly by the user as curl will not transcode nor encode it
further in any way.
.IP "--url <url>"
Specify a URL to fetch. This option is mostly handy when you want to specify
URL(s) in a config file.

If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
then curl will make a guess based on the host. If the outermost sub-domain
name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be
used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by
setting a default protocol, see \fI--proto-default\fP for details.

This option may be used any number of times. To control where this URL is
written, use the \fI-o, --output\fP or the \fI-O, --remote-name\fP options.

Warning: On Windows, particular file:// accesses can be converted to network
accesses by the operating system. Beware!
.IP "-B, --use-ascii"
(FTP LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using a URL that
ends with ";type=A". This option causes data sent to stdout to be in text mode
for win32 systems.
.IP "-A, --user-agent <name>"
(HTTP) 
Specify the User-Agent string to send to the HTTP server. To encode blanks in
the string, surround the string with single quote marks. This header can also
be set with the \fI-H, --header\fP or the \fI--proxy-header\fP options.

If you give an empty argument to \fI-A, --user-agent\fP (""), it will remove the header
completely from the request. If you prefer a blank header, you can set it to a
single space (" ").

If this option is used several times, the last one will be used.
.IP "-u, --user <user:password>"
Specify the user name and password to use for server authentication. Overrides
\fI-n, --netrc\fP and \fI--netrc-optional\fP.

If you simply specify the user name, curl will prompt for a password.

The user name and passwords are split up on the first colon, which makes it
impossible to use a colon in the user name with this option. The password can,
still.








|




|

|
|

|




|
|













|

|
|
|


|









|







|



|






|












|

|
|
|

















|









|


|



















|
|















>
>
>
>
>
>
>
>

|

|


|


|





|

|


|





|



|
>




|
|







|

|







|



|


|


|
|


|




|



|



|



|

|
|





|



|



|

|
|





|


|


|


|



|



|
|




|


|



|



|



|

|
|





|
|


|



|

|
|




|


|

|



|


|


|


|







|





|



|


|





|


|


|



|





|





|






|

|


|
|
|
|
|


|



|







|







|







|



|



|











|




















|








|


|

|
|




|

|




|

|




|



|



|



|



|



|



|









|




|




|




|






|



|








|



|












|
|
|



|



|





|







|


|



|



|



|

|




|

|







2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
document.

FTP and SFTP range downloads only support the simple 'start-stop' syntax
(optionally with one of the numbers omitted). FTP use depends on the extended
FTP command SIZE.

If this option is used several times, the last one will be used.
.IP "\-\-raw"
(HTTP) When used, it disables all internal HTTP decoding of content or transfer
encodings and instead makes them passed on unaltered, raw.

Added in 7.16.2.
.IP "\-e, \-\-referer <URL>"
(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set
with the \fI\-H, \-\-header\fP flag of course.  When used with \fI\-L, \-\-location\fP you can append
";auto" to the \fI\-e, \-\-referer\fP URL to make curl automatically set the previous URL
when it follows a Location: header. The \&";auto" string can be used alone,
even if you don't set an initial \fI\-e, \-\-referer\fP.

If this option is used several times, the last one will be used.

See also \fI-A, --user-agent\fP and \fI-H, --header\fP.
.IP "\-J, \-\-remote-header-name"
(HTTP) This option tells the \fI\-O, \-\-remote-name\fP option to use the server-specified
Content-Disposition filename instead of extracting a filename from the URL.

If the server specifies a file name and a file with that name already exists
in the current working directory it will not be overwritten and an error will
occur. If the server doesn't specify a file name then this option has no
effect.

There's no attempt to decode %-sequences (yet) in the provided file name, so
this option may provide you with rather unexpected file names.

\fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
rogue server could send you the name of a DLL or other file that could possibly
be loaded automatically by Windows or some third party software.
.IP "\-\-remote-name-all"
This option changes the default action for all given URLs to be dealt with as
if \fI\-O, \-\-remote-name\fP were used for each one. So if you want to disable that for a
specific URL after \fI\-\-remote-name-all\fP has been used, you must use "-o \-" or
\-\-no-remote-name.

Added in 7.19.0.
.IP "\-O, \-\-remote-name"
Write output to a local file named like the remote file we get. (Only the file
part of the remote file is used, the path is cut off.)

The file will be saved in the current working directory. If you want the file
saved in a different directory, make sure you change the current working
directory before invoking curl with this option.

The remote file name to use for saving is extracted from the given URL,
nothing else, and if it already exists it will be overwritten. If you want the
server to be able to choose the file name refer to \fI\-J, \-\-remote-header-name\fP which
can be used in addition to this option. If the server chooses a file name and
that name already exists it will not be overwritten.

There is no URL decoding done on the file name. If it has %20 or other URL
encoded parts of the name, they will end up as-is as file name.

You may use this option as many times as the number of URLs you have.
.IP "\-R, \-\-remote-time"
When used, this will make curl attempt to figure out the timestamp of the
remote file, and if that is available make the local file get that same
timestamp.
.IP "\-\-request-target"
(HTTP) Tells curl to use an alternative "target" (path) instead of using the path as
provided in the URL. Particularly useful when wanting to issue HTTP requests
without leading slash or other data that doesn't follow the regular URL
pattern, like "OPTIONS *".

Added in 7.55.0.
.IP "\-X, \-\-request <command>"
(HTTP) Specifies a custom request method to use when communicating with the
HTTP server.  The specified request method will be used instead of the method
otherwise used (which defaults to GET). Read the HTTP 1.1 specification for
details and explanations. Common additional HTTP requests include PUT and
DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and
more.

Normally you don't need this option. All sorts of GET, HEAD, POST and PUT
requests are rather invoked by using dedicated command line options.

This option only changes the actual word used in the HTTP request, it does not
alter the way curl behaves. So for example if you want to make a proper HEAD
request, using \-X HEAD will not suffice. You need to use the \fI\-I, \-\-head\fP option.

The method string you set with \fI\-X, \-\-request\fP will be used for all requests, which
if you for example use \fI\-L, \-\-location\fP may cause unintended side-effects when curl
doesn't change request method according to the HTTP 30x response codes \- and
similar.

(FTP)
Specifies a custom FTP command to use instead of LIST when doing file lists
with FTP.

(POP3)
Specifies a custom POP3 command to use instead of LIST or RETR. (Added in
7.26.0)

(IMAP)
Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0)

(SMTP)
Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0)

If this option is used several times, the last one will be used.
.IP "\-\-resolve <[+]host:port:addr[,addr]...>"
Provide a custom address for a specific host and port pair. Using this, you
can make the curl requests(s) use a specified address and prevent the
otherwise normally resolved address to be used. Consider it a sort of
/etc/hosts alternative provided on the command line. The port number should be
the number used for the specific protocol the host will be used for. It means
you need several entries if you want to provide address for the same host but
different ports.

By specifying '*' as host you can tell curl to resolve any host and specific
port pair to the specified address. Wildcard is resolved last so any \fI\-\-resolve\fP
with a specific host and port will be used first.

The provided address set by this option will be used even if \fI\-4, \-\-ipv4\fP or \fI\-6, \-\-ipv6\fP
is set to make curl use another IP version.

By prefixing the host with a '+' you can make the entry time out after curl's
default timeout (1 minute). Note that this will only make sense for long
running parallel transfers with a lot of files. In such cases, if this option
is used curl will try to resolve the host as it normally would once the
timeout has expired.

Support for providing the IP address within [brackets] was added in 7.57.0.

Support for providing multiple IP addresses per entry was added in 7.59.0.

Support for resolving with wildcard was added in 7.64.0.

Support for the '+' prefix was was added in 7.75.0.

This option can be used many times to add many host names to resolve.

Added in 7.21.3.
.IP "\-\-retry-all-errors"
Retry on any error. This option is used together with \fI\-\-retry\fP.

This option is the "sledgehammer" of retrying. Do not use this option by
default (eg in curlrc), there may be unintended consequences such as sending or
receiving duplicate data. Do not use with redirected input or output. You'd be
much better off handling your unique problems in shell script. Please read the
example below.

Warning: For server compatibility curl attempts to retry failed flaky transfers
as close as possible to how they were started, but this is not possible with
redirected input or output. For example, before retrying it removes output data
from a failed partial transfer that was written to an output file. However this
is not true of data redirected to a | pipe or > file, which are not reset. We
strongly suggest don't parse or record output via redirect in combination with
this option, since you may receive duplicate data.

By default curl will not error on an HTTP response code that indicates an HTTP
error, if the transfer was successful. For example, if a server replies 404
Not Found and the reply is fully received then that is not an error. When
\fI\-\-retry\fP is used then curl will retry on some HTTP response codes that indicate
transient HTTP errors, but that does not include most 4xx response codes such
as 404. If you want to retry on all response codes that indicate HTTP errors
(4xx and 5xx) then combine with \fI\-f, \-\-fail\fP.

Added in 7.71.0.
.IP "\-\-retry-connrefused"
In addition to the other conditions, consider ECONNREFUSED as a transient
error too for \fI\-\-retry\fP. This option is used together with \-\-retry.

Added in 7.52.0.
.IP "\-\-retry-delay <seconds>"
Make curl sleep this amount of time before each retry when a transfer has
failed with a transient error (it changes the default backoff time algorithm
between retries). This option is only interesting if \fI\-\-retry\fP is also
used. Setting this delay to zero will make curl use the default backoff time.

If this option is used several times, the last one will be used.

Added in 7.12.3.
.IP "\-\-retry-max-time <seconds>"
The retry timer is reset before the first transfer attempt. Retries will be
done as usual (see \fI\-\-retry\fP) as long as the timer hasn't reached this given
limit. Notice that if the timer hasn't reached the limit, the request will be
made and while performing, it may take longer than this given time period. To
limit a single request\'s maximum time, use \fI\-m, \-\-max-time\fP.  Set this option to
zero to not timeout retries.

If this option is used several times, the last one will be used.

Added in 7.12.3.
.IP "\-\-retry <num>"
If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0
makes curl do no retries (which is the default). Transient error means either:
a timeout, an FTP 4xx response code or an HTTP 408, 429, 500, 502, 503 or 504
response code.

When curl is about to retry a transfer, it will first wait one second and then
for all forthcoming retries it will double the waiting time until it reaches
10 minutes which then will be the delay between the rest of the retries.  By
using \fI\-\-retry-delay\fP you disable this exponential backoff algorithm. See also
\fI\-\-retry-max-time\fP to limit the total time allowed for retries.

Since curl 7.66.0, curl will comply with the Retry-After: response header if
one was present to know when to issue the next retry.

If this option is used several times, the last one will be used.

Added in 7.12.3.
.IP "\-\-sasl-authzid <identity>"
Use this authorisation identity (authzid), during SASL PLAIN authentication,
in addition to the authentication identity (authcid) as specified by \fI\-u, \-\-user\fP.

If the option isn't specified, the server will derive the authzid from the
authcid, but if specified, and depending on the server implementation, it may
be used to access another user's inbox, that the user has been granted access
to, or a shared mailbox for example.

Added in 7.66.0.
.IP "\-\-sasl-ir"
Enable initial response in SASL authentication.

Added in 7.31.0.
.IP "\-\-service-name <name>"
This option allows you to change the service name for SPNEGO.

Examples: \fI\-\-negotiate\fP \fI\-\-service-name\fP sockd would use sockd/server-name.

Added in 7.43.0.
.IP "\-S, \-\-show-error"
When used with \fI\-s, \-\-silent\fP, it makes curl show an error message if it fails.

See also \fI--no-progress-meter\fP.
.IP "\-s, \-\-silent"
Silent or quiet mode. Don't show progress meter or error messages.  Makes Curl
mute. It will still output the data you ask for, potentially even to the
terminal/stdout unless you redirect it.

Use \fI\-S, \-\-show-error\fP in addition to this option to disable progress meter but
still show error messages.

See also \fI-v, --verbose\fP, \fI--stderr\fP and \fI--no-progress-meter\fP.
.IP "\-\-socks4 <host[:port]>"
Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080.

This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks4 proxy
with \fI\-x, \-\-proxy\fP using a socks4:// protocol prefix.

Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

Added in 7.15.2.
.IP "\-\-socks4a <host[:port]>"
Use the specified SOCKS4a proxy. If the port number is not specified, it is
assumed at port 1080.

This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks4a proxy
with \fI\-x, \-\-proxy\fP using a socks4a:// protocol prefix.

Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

Added in 7.18.0.
.IP "\-\-socks5-basic"
Tells curl to use username/password authentication when connecting to a SOCKS5
proxy.  The username/password authentication is enabled by default.  Use
\fI\-\-socks5-gssapi\fP to force GSS-API authentication to SOCKS5 proxies.

Added in 7.55.0.
.IP "\-\-socks5-gssapi-nec"
As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961
says in section 4.3/4.4 it should be protected, but the NEC reference
implementation does not.  The option \fI\-\-socks5-gssapi-nec\fP allows the
unprotected exchange of the protection mode negotiation.

Added in 7.19.4.
.IP "\-\-socks5-gssapi-service <name>"
The default service name for a socks server is rcmd/server-fqdn. This option
allows you to change it.

Examples: \fI\-\-socks5\fP proxy-name \fI\-\-socks5-gssapi-service\fP sockd would use
sockd/proxy-name \fI\-\-socks5\fP proxy-name \fI\-\-socks5-gssapi-service\fP sockd/real-name
would use sockd/real-name for cases where the proxy-name does not match the
principal name.

Added in 7.19.4.
.IP "\-\-socks5-gssapi"
Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
The GSS-API authentication is enabled by default (if curl is compiled with
GSS-API support).  Use \fI\-\-socks5-basic\fP to force username/password authentication
to SOCKS5 proxies.

Added in 7.55.0.
.IP "\-\-socks5-hostname <host[:port]>"
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
the port number is not specified, it is assumed at port 1080.

This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks5
hostname proxy with \fI\-x, \-\-proxy\fP using a socks5h:// protocol prefix.

Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

Added in 7.18.0.
.IP "\-\-socks5 <host[:port]>"
Use the specified SOCKS5 proxy \- but resolve the host name locally. If the
port number is not specified, it is assumed at port 1080.

This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.

Since 7.21.7, this option is superfluous since you can specify a socks5 proxy
with \fI\-x, \-\-proxy\fP using a socks5:// protocol prefix.

Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.

If this option is used several times, the last one will be used.

This option (as well as \fI\-\-socks4\fP) does not work with IPV6, FTPS or LDAP.

Added in 7.18.0.
.IP "\-Y, \-\-speed-limit <speed>"
If a download is slower than this given speed (in bytes per second) for
speed-time seconds it gets aborted. speed-time is set with \fI\-y, \-\-speed-time\fP and is
30 if not set.

If this option is used several times, the last one will be used.
.IP "\-y, \-\-speed-time <seconds>"
If a download is slower than speed-limit bytes per second during a speed-time
period, the download gets aborted. If speed-time is used, the default
speed-limit will be 1 unless set with \fI\-Y, \-\-speed-limit\fP.

This option controls transfers and thus will not affect slow connects etc. If
this is a concern for you, try the \fI\-\-connect-timeout\fP option.

If this option is used several times, the last one will be used.
.IP "\-\-ssl-allow-beast"
This option tells curl to not work around a security flaw in the SSL3 and
TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer may
use workarounds known to cause interoperability problems with some older SSL
implementations. WARNING: this option loosens the SSL security, and by using
this flag you ask for exactly that.

Added in 7.25.0.
.IP "\-\-ssl-no-revoke"
(Schannel) This option tells curl to disable certificate revocation checks.
WARNING: this option loosens the SSL security, and by using this flag you ask
for exactly that.

Added in 7.44.0.
.IP "\-\-ssl-reqd"
(FTP IMAP POP3 SMTP) Require SSL/TLS for the connection.  Terminates the connection if the server
doesn't support SSL/TLS.

This option was formerly known as \-\-ftp-ssl-reqd.

Added in 7.20.0.
.IP "\-\-ssl-revoke-best-effort"
(Schannel) This option tells curl to ignore certificate revocation checks when
they failed due to missing/offline distribution points for the revocation check
lists.

Added in 7.70.0.
.IP "\-\-ssl"
(FTP IMAP POP3 SMTP) 
Try to use SSL/TLS for the connection.  Reverts to a non-secure connection if
the server doesn't support SSL/TLS.  See also \fI\-\-ftp-ssl-control\fP and \fI\-\-ssl-reqd\fP
for different levels of encryption required.

This option was formerly known as \-\-ftp-ssl (Added in 7.11.0). That option
name can still be used but will be removed in a future version.

Added in 7.20.0.
.IP "\-2, \-\-sslv2"
(SSL) Forces curl to use SSL version 2 when negotiating with a remote SSL
server. Sometimes curl is built without SSLv2 support. SSLv2 is widely
considered insecure (see RFC 6176).

See also \fI--http1.1\fP and \fI--http2\fP. \fI-2, --sslv2\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-3, --sslv3\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
.IP "\-3, \-\-sslv3"
(SSL) Forces curl to use SSL version 3 when negotiating with a remote SSL
server. Sometimes curl is built without SSLv3 support. SSLv3 is widely
considered insecure (see RFC 7568).

See also \fI--http1.1\fP and \fI--http2\fP. \fI-3, --sslv3\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-2, --sslv2\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
.IP "\-\-stderr <file>"
Redirect all writes to stderr to the specified file instead. If the file name
is a plain '-', it is instead written to stdout.

If this option is used several times, the last one will be used.

See also \fI-v, --verbose\fP and \fI-s, --silent\fP.
.IP "\-\-styled-output"
Enables the automatic use of bold font styles when writing HTTP headers to the
terminal. Use \-\-no-styled-output to switch them off.

Added in 7.61.0.
.IP "\-\-suppress-connect-headers"
When \fI\-p, \-\-proxytunnel\fP is used and a CONNECT request is made don't output proxy
CONNECT response headers. This option is meant to be used with \fI\-D, \-\-dump-header\fP or
\fI\-i, \-\-include\fP which are used to show protocol headers in the output. It has no
effect on debug options such as \fI\-v, \-\-verbose\fP or \fI\-\-trace\fP, or any statistics.

See also \fI-D, --dump-header\fP, \fI-i, --include\fP and \fI-p, --proxytunnel\fP.
.IP "\-\-tcp-fastopen"
Enable use of TCP Fast Open (RFC7413).

Added in 7.49.0.
.IP "\-\-tcp-nodelay"
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
details about this option.

Since 7.50.2, curl sets this option by default and you need to explicitly
switch it off if you don't want it on.

Added in 7.11.2.
.IP "\-t, \-\-telnet-option <opt=val>"
Pass options to the telnet protocol. Supported options are:

TTYPE=<term> Sets the terminal type.

XDISPLOC=<X display> Sets the X display location.

NEW_ENV=<var,val> Sets an environment variable.
.IP "\-\-tftp-blksize <value>"
(TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that curl will
try to use when transferring data to or from a TFTP server. By default 512
bytes will be used.

If this option is used several times, the last one will be used.

Added in 7.20.0.
.IP "\-\-tftp-no-options"
(TFTP) Tells curl not to send TFTP options requests.

This option improves interop with some legacy servers that do not acknowledge
or properly implement TFTP options. When this option is used \fI\-\-tftp-blksize\fP is
ignored.

Added in 7.48.0.
.IP "\-z, \-\-time-cond <time>"
(HTTP FTP) Request a file that has been modified later than the given time and date, or
one that has been modified before that time. The <date expression> can be all
sorts of date strings or if it doesn't match any internal ones, it is taken as
a filename and tries to get the modification date (mtime) from <file>
instead. See the \fIcurl_getdate(3)\fP man pages for date expression details.

Start the date expression with a dash (-) to make it request for a document
that is older than the given date/time, default is a document that is newer
than the specified date/time.

If this option is used several times, the last one will be used.
.IP "\-\-tls-max <VERSION>"
(SSL) VERSION defines maximum supported TLS version. The minimum acceptable version
is set by tlsv1.0, tlsv1.1, tlsv1.2 or tlsv1.3.

If the connection is done without TLS, this option has no effect. This
includes QUIC-using (HTTP/3) transfers.

.RS
.IP "default"
Use up to recommended TLS version.
.IP "1.0"
Use up to TLSv1.0.
.IP "1.1"
Use up to TLSv1.1.
.IP "1.2"
Use up to TLSv1.2.
.IP "1.3"
Use up to TLSv1.3.
.RE

See also \fI--tlsv1.0\fP, \fI--tlsv1.1\fP, \fI--tlsv1.2\fP and \fI--tlsv1.3\fP. \fI--tls-max\fP requires that the underlying libcurl was built to support TLS. Added in 7.54.0.
.IP "\-\-tls13-ciphers <ciphersuite list>"
(TLS) Specifies which cipher suites to use in the connection if it negotiates TLS
1.3. The list of ciphers suites must specify valid ciphers. Read up on TLS 1.3
cipher suite details on this URL:

 https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
cipher suites by using the \fI\-\-ciphers\fP option.

If this option is used several times, the last one will be used.
.IP "\-\-tlsauthtype <type>"
Set TLS authentication type. Currently, the only supported option is "SRP",
for TLS-SRP (RFC 5054). If \fI\-\-tlsuser\fP and \fI\-\-tlspassword\fP are specified but
\fI\-\-tlsauthtype\fP is not, then this option defaults to "SRP".  This option works
only if the underlying libcurl is built with TLS-SRP support, which requires
OpenSSL or GnuTLS with TLS-SRP support.

Added in 7.21.4.
.IP "\-\-tlspassword"
Set password for use with the TLS authentication method specified with
\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlsuser\fP also be set.

This doesn't work with TLS 1.3.

Added in 7.21.4.
.IP "\-\-tlsuser <name>"
Set username for use with the TLS authentication method specified with
\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlspassword\fP also is set.

This doesn't work with TLS 1.3.

Added in 7.21.4.
.IP "\-\-tlsv1.0"
(TLS) Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.0,
but behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
you want to set a maximum TLS version.

Added in 7.34.0.
.IP "\-\-tlsv1.1"
(TLS) Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.1,
but behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
you want to set a maximum TLS version.

Added in 7.34.0.
.IP "\-\-tlsv1.2"
(TLS) Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.2,
but behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
you want to set a maximum TLS version.

Added in 7.34.0.
.IP "\-\-tlsv1.3"
(TLS) Forces curl to use TLS version 1.3 or later when connecting to a remote TLS
server.

If the connection is done without TLS, this option has no effect. This
includes QUIC-using (HTTP/3) transfers.

Note that TLS 1.3 is not supported by all TLS backends.

Added in 7.52.0.
.IP "\-1, \-\-tlsv1"
(SSL) Tells curl to use at least TLS version 1.x when negotiating with a remote TLS
server. That means TLS version 1.0 or higher

See also \fI--http1.1\fP and \fI--http2\fP. \fI-1, --tlsv1\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--tlsv1.1\fP and \fI--tlsv1.2\fP and \fI--tlsv1.3\fP.
.IP "\-\-tr-encoding"
(HTTP) Request a compressed Transfer-Encoding response using one of the algorithms
curl supports, and uncompress the data while receiving it.

Added in 7.21.6.
.IP "\-\-trace-ascii <file>"
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
the output sent to stdout.

This is very similar to \fI\-\-trace\fP, but leaves out the hex part and only shows
the ASCII part of the dump. It makes smaller output that might be easier to
read for untrained humans.

If this option is used several times, the last one will be used.

This option overrides \fI--trace\fP and \fI-v, --verbose\fP.
.IP "\-\-trace-time"
Prepends a time stamp to each trace or verbose line that curl displays.

Added in 7.14.0.
.IP "\-\-trace <file>"
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
the output sent to stdout. Use "%" as filename to have the output sent to
stderr.

If this option is used several times, the last one will be used.

This option overrides \fI-v, --verbose\fP and \fI--trace-ascii\fP.
.IP "\-\-unix-socket <path>"
(HTTP) Connect through this Unix domain socket, instead of using the network.

Added in 7.40.0.
.IP "\-T, \-\-upload-file <file>"
This transfers the specified local file to the remote URL. If there is no file
part in the specified URL, curl will append the local file name. NOTE that you
must use a trailing / on the last directory to really prove to Curl that there
is no file name or curl will think that your last directory name is the remote
file name to use. That will most likely cause the upload operation to fail. If
this is used on an HTTP(S) server, the PUT command will be used.

Use the file name "-" (a single dash) to use stdin instead of a given file.
Alternately, the file name "." (a single period) may be specified instead
of "-" to use stdin in non-blocking mode to allow reading server output
while stdin is being uploaded.

You can specify one \fI\-T, \-\-upload-file\fP for each URL on the command line. Each
\fI\-T, \-\-upload-file\fP + URL pair specifies what to upload and to where. curl also
supports "globbing" of the \fI\-T, \-\-upload-file\fP argument, meaning that you can upload
multiple files to a single URL by using the same URL globbing style supported
in the URL, like this:

 curl \-\-upload-file "{file1,file2}" http://www.example.com

or even

 curl \-T "img[1-1000].png" ftp://ftp.example.com/upload/

When uploading to an SMTP server: the uploaded data is assumed to be RFC 5322
formatted. It has to feature the necessary set of headers and mail body
formatted correctly by the user as curl will not transcode nor encode it
further in any way.
.IP "\-\-url <url>"
Specify a URL to fetch. This option is mostly handy when you want to specify
URL(s) in a config file.

If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
then curl will make a guess based on the host. If the outermost sub-domain
name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be
used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by
setting a default protocol, see \fI\-\-proto-default\fP for details.

This option may be used any number of times. To control where this URL is
written, use the \fI\-o, \-\-output\fP or the \fI\-O, \-\-remote-name\fP options.

Warning: On Windows, particular file:// accesses can be converted to network
accesses by the operating system. Beware!
.IP "\-B, \-\-use-ascii"
(FTP LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using a URL that
ends with ";type=A". This option causes data sent to stdout to be in text mode
for win32 systems.
.IP "\-A, \-\-user-agent <name>"
(HTTP) 
Specify the User-Agent string to send to the HTTP server. To encode blanks in
the string, surround the string with single quote marks. This header can also
be set with the \fI\-H, \-\-header\fP or the \fI\-\-proxy-header\fP options.

If you give an empty argument to \fI\-A, \-\-user-agent\fP (""), it will remove the header
completely from the request. If you prefer a blank header, you can set it to a
single space (" ").

If this option is used several times, the last one will be used.
.IP "\-u, \-\-user <user:password>"
Specify the user name and password to use for server authentication. Overrides
\fI\-n, \-\-netrc\fP and \fI\-\-netrc-optional\fP.

If you simply specify the user name, curl will prompt for a password.

The user name and passwords are split up on the first colon, which makes it
impossible to use a colon in the user name with this option. The password can,
still.

2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915

If you use a Windows SSPI-enabled curl binary and perform Kerberos V5,
Negotiate, NTLM or Digest authentication then you can tell curl to select
the user name and password from your environment by specifying a single colon
with this option: "-u :".

If this option is used several times, the last one will be used.
.IP "-v, --verbose"
Makes curl verbose during the operation. Useful for debugging and seeing
what's going on "under the hood". A line starting with '>' means "header data"
sent by curl, '<' means "header data" received by curl that is hidden in
normal cases, and a line starting with '*' means additional info provided by
curl.

If you only want HTTP headers in the output, \fI-i, --include\fP might be the option
you're looking for.

If you think this option still doesn't give you enough details, consider using
\fI--trace\fP or \fI--trace-ascii\fP instead.

Use \fI-s, --silent\fP to make curl really quiet.

See also \fI-i, --include\fP. This option overrides \fI--trace\fP and \fI--trace-ascii\fP.
.IP "-V, --version"
Displays information about curl and the libcurl version it uses.

The first line includes the full version of curl, libcurl and other 3rd party
libraries linked with the executable.

The second line (starts with "Protocols:") shows all protocols that libcurl
reports to support.







|






|



|

|


|







2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951

If you use a Windows SSPI-enabled curl binary and perform Kerberos V5,
Negotiate, NTLM or Digest authentication then you can tell curl to select
the user name and password from your environment by specifying a single colon
with this option: "-u :".

If this option is used several times, the last one will be used.
.IP "\-v, \-\-verbose"
Makes curl verbose during the operation. Useful for debugging and seeing
what's going on "under the hood". A line starting with '>' means "header data"
sent by curl, '<' means "header data" received by curl that is hidden in
normal cases, and a line starting with '*' means additional info provided by
curl.

If you only want HTTP headers in the output, \fI\-i, \-\-include\fP might be the option
you're looking for.

If you think this option still doesn't give you enough details, consider using
\fI\-\-trace\fP or \fI\-\-trace-ascii\fP instead.

Use \fI\-s, \-\-silent\fP to make curl really quiet.

See also \fI-i, --include\fP. This option overrides \fI--trace\fP and \fI--trace-ascii\fP.
.IP "\-V, \-\-version"
Displays information about curl and the libcurl version it uses.

The first line includes the full version of curl, libcurl and other 3rd party
libraries linked with the executable.

The second line (starts with "Protocols:") shows all protocols that libcurl
reports to support.
2925
2926
2927
2928
2929
2930
2931



2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951

2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971




2972
2973


2974
2975
2976
2977
2978
2979
2980
2981
2982
.IP "brotli"
Support for automatic brotli compression over HTTP(S).
.IP "CharConv"
curl was built with support for character set conversions (like EBCDIC)
.IP "Debug"
This curl uses a libcurl built with Debug. This enables more error-tracking
and memory debugging etc. For curl-developers only!



.IP "GSS-API"
GSS-API is supported.
.IP "HSTS"
HSTS support is present.
.IP "HTTP2"
HTTP/2 support has been built-in.
.IP "HTTP3"
HTTP/3 support has been built-in.
.IP "HTTPS-proxy"
This curl is built to support HTTPS proxy.
.IP "IDN"
This curl supports IDN - international domain names.
.IP "IPv6"
You can use IPv6 with this.
.IP "krb4"
Krb4 for FTP is supported.
.IP "Largefile"
This curl supports transfers of large files, files larger than 2GB.
.IP "libz"
Automatic decompression of compressed files over HTTP is supported.

.IP "Metalink"
This curl supports Metalink
.IP "MultiSSL"
This curl supports multiple TLS backends.
.IP "NTLM"
NTLM authentication is supported.
.IP "NTLM"
NTLM authentication is supported.
.IP "PSL"
PSL is short for Public Suffix List and means that this curl has been built
with knowledge about "public suffixes".
.IP "SPNEGO"
SPNEGO authentication is supported.
.IP "SSL"
SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S
and so on.
.IP "SSPI"
SSPI is supported.
.IP "TLS-SRP"
SRP (Secure Remote Password) authentication is supported for TLS.




.IP "UnixSockets"
Unix sockets support is provided.


.RE
.IP "-w, --write-out <format>"
Make curl display information on stdout after a completed transfer. The format
is a string that may contain plain text mixed with any number of
variables. The format can be specified as a literal "string", or you can have
curl read the format from a file with "@filename" and to tell curl to read the
format from stdin you write "@-".

The variables present in the output format will be substituted by the value or







>
>
>











|


|
|



|
>

|




|
|












>
>
>
>


>
>

|







2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
.IP "brotli"
Support for automatic brotli compression over HTTP(S).
.IP "CharConv"
curl was built with support for character set conversions (like EBCDIC)
.IP "Debug"
This curl uses a libcurl built with Debug. This enables more error-tracking
and memory debugging etc. For curl-developers only!
.IP "gsasl"
The built-in SASL authentication includes extensions to support SCRAM because
libcurl was built with libgsasl.
.IP "GSS-API"
GSS-API is supported.
.IP "HSTS"
HSTS support is present.
.IP "HTTP2"
HTTP/2 support has been built-in.
.IP "HTTP3"
HTTP/3 support has been built-in.
.IP "HTTPS-proxy"
This curl is built to support HTTPS proxy.
.IP "IDN"
This curl supports IDN \- international domain names.
.IP "IPv6"
You can use IPv6 with this.
.IP "Kerberos"
Kerberos V5 authentication is supported.
.IP "Largefile"
This curl supports transfers of large files, files larger than 2GB.
.IP "libz"
Automatic decompression (via gzip, deflate) of compressed files over HTTP is
supported.
.IP "Metalink"
This curl supports Metalink.
.IP "MultiSSL"
This curl supports multiple TLS backends.
.IP "NTLM"
NTLM authentication is supported.
.IP "NTLM_WB"
NTLM delegation to winbind helper is supported.
.IP "PSL"
PSL is short for Public Suffix List and means that this curl has been built
with knowledge about "public suffixes".
.IP "SPNEGO"
SPNEGO authentication is supported.
.IP "SSL"
SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S
and so on.
.IP "SSPI"
SSPI is supported.
.IP "TLS-SRP"
SRP (Secure Remote Password) authentication is supported for TLS.
.IP "TrackMemory"
Debug memory tracking is supported.
.IP "Unicode"
Unicode support on Windows.
.IP "UnixSockets"
Unix sockets support is provided.
.IP "zstd"
Automatic decompression (via zstd) of compressed files over HTTP is supported.
.RE
.IP "\-w, \-\-write-out <format>"
Make curl display information on stdout after a completed transfer. The format
is a string that may contain plain text mixed with any number of
variables. The format can be specified as a literal "string", or you can have
curl read the format from a file with "@filename" and to tell curl to read the
format from stdin you write "@-".

The variables present in the output format will be substituted by the value or
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
.B content_type
The Content-Type of the requested document, if there was any.
.TP
.B errormsg
The error message. (Added in 7.75.0)
.TP
.B exitcode
The numerical exitcode. (Added in 7.75.0)
.TP
.B filename_effective
The ultimate filename that curl writes out to. This is only meaningful if curl
is told to write to a file with the \fI-O, --remote-name\fP or \fI-o, --output\fP
option. It's most useful in combination with the \fI-J, --remote-header-name\fP
option. (Added in 7.26.0)
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
server. (Added in 7.15.4)
.TP
.B http_code







|



|
|







3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
.B content_type
The Content-Type of the requested document, if there was any.
.TP
.B errormsg
The error message. (Added in 7.75.0)
.TP
.B exitcode
The numerical exitcode of the transfer. (Added in 7.75.0)
.TP
.B filename_effective
The ultimate filename that curl writes out to. This is only meaningful if curl
is told to write to a file with the \fI\-O, \-\-remote-name\fP or \fI\-o, \-\-output\fP
option. It's most useful in combination with the \fI\-J, \-\-remote-header-name\fP
option. (Added in 7.26.0)
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
server. (Added in 7.15.4)
.TP
.B http_code
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
.B http_version
The http version that was effectively used. (Added in 7.50.0)
.TP
.B json
A JSON object with all available keys.
.TP
.B local_ip
The IP address of the local end of the most recently done connection - can be
either IPv4 or IPv6 (Added in 7.29.0)
.TP
.B local_port
The local port number of the most recently done connection (Added in 7.29.0)
.TP
.B method
The http method used in the most recent HTTP request (Added in 7.72.0)







|







3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
.B http_version
The http version that was effectively used. (Added in 7.50.0)
.TP
.B json
A JSON object with all available keys.
.TP
.B local_ip
The IP address of the local end of the most recently done connection \- can be
either IPv4 or IPv6 (Added in 7.29.0)
.TP
.B local_port
The local port number of the most recently done connection (Added in 7.29.0)
.TP
.B method
The http method used in the most recent HTTP request (Added in 7.72.0)
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064



3065
3066
3067
3068
3069
3070
3071
3072
3073
(Added in 7.75.0)
.TP
.B proxy_ssl_verify_result
The result of the HTTPS proxy's SSL peer certificate verification that was
requested. 0 means the verification was successful. (Added in 7.52.0)
.TP
.B redirect_url
When an HTTP request was made without \fI-L, --location\fP to follow redirects (or when
--max-redir is met), this variable will show the actual URL a redirect
\fIwould\fP have gone to. (Added in 7.18.2)
.TP



.B remote_ip
The remote IP address of the most recently done connection - can be either
IPv4 or IPv6 (Added in 7.29.0)
.TP
.B remote_port
The remote port number of the most recently done connection (Added in 7.29.0)
.TP
.B response_code
The numerical response code that was found in the last transfer (formerly







|
|


>
>
>

|







3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
(Added in 7.75.0)
.TP
.B proxy_ssl_verify_result
The result of the HTTPS proxy's SSL peer certificate verification that was
requested. 0 means the verification was successful. (Added in 7.52.0)
.TP
.B redirect_url
When an HTTP request was made without \fI\-L, \-\-location\fP to follow redirects (or when
\-\-max-redir is met), this variable will show the actual URL a redirect
\fIwould\fP have gone to. (Added in 7.18.2)
.TP
.B referer
The Referer: header, if there was any. (Added in 7.76.0)
.TP
.B remote_ip
The remote IP address of the most recently done connection \- can be either
IPv4 or IPv6 (Added in 7.29.0)
.TP
.B remote_port
The remote port number of the most recently done connection (Added in 7.29.0)
.TP
.B response_code
The numerical response code that was found in the last transfer (formerly
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
second.
.TP
.B ssl_verify_result
The result of the SSL peer certificate verification that was requested. 0
means the verification was successful. (Added in 7.19.0)
.TP
.B stderr
From this point on, the \fI-w, --write-out\fP output will be written to standard
error. (Added in 7.63.0)
.TP
.B stdout
From this point on, the \fI-w, --write-out\fP output will be written to standard output.
This is the default, but can be used to switch back after switching to stderr.
(Added in 7.63.0)
.TP
.B time_appconnect
The time, in seconds, it took from the start until the SSL/SSH/etc
connect/handshake to the remote host was completed. (Added in 7.19.0)
.TP







|



|







3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
second.
.TP
.B ssl_verify_result
The result of the SSL peer certificate verification that was requested. 0
means the verification was successful. (Added in 7.19.0)
.TP
.B stderr
From this point on, the \fI\-w, \-\-write-out\fP output will be written to standard
error. (Added in 7.63.0)
.TP
.B stdout
From this point on, the \fI\-w, \-\-write-out\fP output will be written to standard output.
This is the default, but can be used to switch back after switching to stderr.
(Added in 7.63.0)
.TP
.B time_appconnect
The time, in seconds, it took from the start until the SSL/SSH/etc
connect/handshake to the remote host was completed. (Added in 7.19.0)
.TP
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208



3209
3210
3211
3212
3213
3214
3215
.TP
.B url_effective
The URL that was fetched last. This is most meaningful if you've told curl
to follow location: headers.
.RE
.IP
If this option is used several times, the last one will be used.
.IP "--xattr"
When saving output to a file, this option tells curl to store certain file
metadata in extended file attributes. Currently, the URL is stored in the
xdg.origin.url attribute and, for HTTP, the content type is stored in
the mime_type attribute. If the file system does not support extended
attributes, a warning is issued.
.SH FILES
.I ~/.curlrc
.RS
Default config file, see \fI-K, --config\fP for details.
.SH ENVIRONMENT
The environment variables can be specified in lower case or upper case. The
lower case version has precedence. http_proxy is an exception as it is only
available in lower case.

Using an environment variable to set the proxy has the same effect as using
the \fI-x, --proxy\fP option.

.IP "http_proxy [protocol://]<host>[:port]"
Sets the proxy server to use for HTTP.
.IP "HTTPS_PROXY [protocol://]<host>[:port]"
Sets the proxy server to use for HTTPS.
.IP "[url-protocol]_PROXY [protocol://]<host>[:port]"
Sets the proxy server to use for [url-protocol], where the protocol is a
protocol that curl supports and as specified in a URL. FTP, FTPS, POP3, IMAP,
SMTP, LDAP etc.
.IP "ALL_PROXY [protocol://]<host>[:port]"
Sets the proxy server to use if no protocol-specific proxy is set.
.IP "NO_PROXY <comma-separated list of hosts/domains>"
list of host names that shouldn't go through any proxy. If set to an asterisk
\&'*' only, it matches all hosts. Each name in this list is matched as either
a domain name which contains the hostname, or the hostname itself.

This environment variable disables use of the proxy even when specified with
the \fI-x, --proxy\fP option. That is
.B NO_PROXY=direct.example.com curl -x http://proxy.example.com
.B http://direct.example.com
accesses the target URL directly, and
.B NO_PROXY=direct.example.com curl -x http://proxy.example.com
.B http://somewhere.example.com
accesses the target URL through the proxy.

The list of host names can also be include numerical IP addresses, and IPv6
versions should then be given without enclosing brackets.

IPv6 numerical addresses are compared as strings, so they will only match if
the representations are the same: "::1" is the same as "::0:1" but they don't
match.
.IP "CURL_SSL_BACKEND <TLS backend>"
If curl was built with support for "MultiSSL", meaning that it has built-in
support for more than one TLS backend, this environment variable can be set to
the case insensitive name of the particular backend to use when curl is
invoked. Setting a name that isn't a built-in alternative, will make curl
stay with the default.



.IP "QLOGDIR <directory name>"
If curl was built with HTTP/3 support, setting this environment variable to a
local directory will make curl produce qlogs in that directory, using file
names named after the destination connection id (in hex). Do note that these
files can become rather large. Works with both QUIC backends.
.IP "SSLKEYLOGFILE <file name>"
If you set this environment variable to a file name, curl will store TLS







|








|






|

















|
|


|













|

>
>
>







3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
.TP
.B url_effective
The URL that was fetched last. This is most meaningful if you've told curl
to follow location: headers.
.RE
.IP
If this option is used several times, the last one will be used.
.IP "\-\-xattr"
When saving output to a file, this option tells curl to store certain file
metadata in extended file attributes. Currently, the URL is stored in the
xdg.origin.url attribute and, for HTTP, the content type is stored in
the mime_type attribute. If the file system does not support extended
attributes, a warning is issued.
.SH FILES
.I ~/.curlrc
.RS
Default config file, see \fI\-K, \-\-config\fP for details.
.SH ENVIRONMENT
The environment variables can be specified in lower case or upper case. The
lower case version has precedence. http_proxy is an exception as it is only
available in lower case.

Using an environment variable to set the proxy has the same effect as using
the \fI\-x, \-\-proxy\fP option.

.IP "http_proxy [protocol://]<host>[:port]"
Sets the proxy server to use for HTTP.
.IP "HTTPS_PROXY [protocol://]<host>[:port]"
Sets the proxy server to use for HTTPS.
.IP "[url-protocol]_PROXY [protocol://]<host>[:port]"
Sets the proxy server to use for [url-protocol], where the protocol is a
protocol that curl supports and as specified in a URL. FTP, FTPS, POP3, IMAP,
SMTP, LDAP etc.
.IP "ALL_PROXY [protocol://]<host>[:port]"
Sets the proxy server to use if no protocol-specific proxy is set.
.IP "NO_PROXY <comma-separated list of hosts/domains>"
list of host names that shouldn't go through any proxy. If set to an asterisk
\&'*' only, it matches all hosts. Each name in this list is matched as either
a domain name which contains the hostname, or the hostname itself.

This environment variable disables use of the proxy even when specified with
the \fI\-x, \-\-proxy\fP option. That is
.B NO_PROXY=direct.example.com curl \-x http://proxy.example.com
.B http://direct.example.com
accesses the target URL directly, and
.B NO_PROXY=direct.example.com curl \-x http://proxy.example.com
.B http://somewhere.example.com
accesses the target URL through the proxy.

The list of host names can also be include numerical IP addresses, and IPv6
versions should then be given without enclosing brackets.

IPv6 numerical addresses are compared as strings, so they will only match if
the representations are the same: "::1" is the same as "::0:1" but they don't
match.
.IP "CURL_SSL_BACKEND <TLS backend>"
If curl was built with support for "MultiSSL", meaning that it has built-in
support for more than one TLS backend, this environment variable can be set to
the case insensitive name of the particular backend to use when curl is
invoked. Setting a name that isn't a built-in alternative will make curl
stay with the default.

SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
.IP "QLOGDIR <directory name>"
If curl was built with HTTP/3 support, setting this environment variable to a
local directory will make curl produce qlogs in that directory, using file
names named after the destination connection id (in hex). Do note that these
files can become rather large. Works with both QUIC backends.
.IP "SSLKEYLOGFILE <file name>"
If you set this environment variable to a file name, curl will store TLS
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246

The supported proxy protocol prefixes are as follows:
.IP "http://"
Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
.IP "https://"
Makes it treated as an \fBHTTPS\fP proxy.
.IP "socks4://"
Makes it the equivalent of \fI--socks4\fP
.IP "socks4a://"
Makes it the equivalent of \fI--socks4a\fP
.IP "socks5://"
Makes it the equivalent of \fI--socks5\fP
.IP "socks5h://"
Makes it the equivalent of \fI--socks5-hostname\fP
.SH EXIT CODES
There are a bunch of different error codes and their corresponding error
messages that may appear during bad conditions. At the time of this writing,
the exit codes are:
.IP 1
Unsupported protocol. This build of curl has no support for this protocol.
.IP 2







|

|

|

|







3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298

The supported proxy protocol prefixes are as follows:
.IP "http://"
Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
.IP "https://"
Makes it treated as an \fBHTTPS\fP proxy.
.IP "socks4://"
Makes it the equivalent of \fI\-\-socks4\fP
.IP "socks4a://"
Makes it the equivalent of \fI\-\-socks4a\fP
.IP "socks5://"
Makes it the equivalent of \fI\-\-socks5\fP
.IP "socks5h://"
Makes it the equivalent of \fI\-\-socks5-hostname\fP
.SH EXIT CODES
There are a bunch of different error codes and their corresponding error
messages that may appear during bad conditions. At the time of this writing,
the exit codes are:
.IP 1
Unsupported protocol. This build of curl has no support for this protocol.
.IP 2
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
FTP couldn't download/access the given file, the RETR (or similar) command
failed.
.IP 21
FTP quote error. A quote command returned error from the server.
.IP 22
HTTP page not retrieved. The requested url was not found or returned another
error with the HTTP error code being 400 or above. This return code only
appears if \fI-f, --fail\fP is used.
.IP 23
Write error. Curl couldn't write data to a local filesystem or similar.
.IP 25
FTP couldn't STOR file. The server denied the STOR operation, used for FTP
uploading.
.IP 26
Read error. Various reading problems.







|







3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
FTP couldn't download/access the given file, the RETR (or similar) command
failed.
.IP 21
FTP quote error. A quote command returned error from the server.
.IP 22
HTTP page not retrieved. The requested url was not found or returned another
error with the HTTP error code being 400 or above. This return code only
appears if \fI\-f, \-\-fail\fP is used.
.IP 23
Write error. Curl couldn't write data to a local filesystem or similar.
.IP 25
FTP couldn't STOR file. The server denied the STOR operation, used for FTP
uploading.
.IP 26
Read error. Various reading problems.
Changes to jni/curl/docs/examples/Makefile.in.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
128
129
130
131
132
133
134
135

136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165



166




167

168














169
170
171
172
173
174
175
176
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \

	cookie_interface$(EXEEXT) debug$(EXEEXT) fileupload$(EXEEXT) \
	fopen$(EXEEXT) ftpget$(EXEEXT) ftpgetresp$(EXEEXT) \
	ftpupload$(EXEEXT) getinfo$(EXEEXT) getinmemory$(EXEEXT) \
	http-post$(EXEEXT) httpput$(EXEEXT) https$(EXEEXT) \
	multi-app$(EXEEXT) multi-debugcallback$(EXEEXT) \
	multi-double$(EXEEXT) multi-post$(EXEEXT) \
	multi-single$(EXEEXT) persistent$(EXEEXT) \
	post-callback$(EXEEXT) postit2$(EXEEXT) sepheaders$(EXEEXT) \
	simple$(EXEEXT) simplepost$(EXEEXT) simplessl$(EXEEXT) \
	sendrecv$(EXEEXT) httpcustomheader$(EXEEXT) certinfo$(EXEEXT) \
	chkspeed$(EXEEXT) ftpgetinfo$(EXEEXT) ftp-wildcard$(EXEEXT) \
	smtp-mail$(EXEEXT) smtp-mime$(EXEEXT) smtp-multi$(EXEEXT) \
	smtp-ssl$(EXEEXT) smtp-tls$(EXEEXT) smtp-vrfy$(EXEEXT) \
	smtp-expn$(EXEEXT) rtsp$(EXEEXT) externalsocket$(EXEEXT) \
	resolve$(EXEEXT) progressfunc$(EXEEXT) pop3-retr$(EXEEXT) \
	pop3-list$(EXEEXT) pop3-uidl$(EXEEXT) pop3-dele$(EXEEXT) \
	pop3-top$(EXEEXT) pop3-stat$(EXEEXT) pop3-noop$(EXEEXT) \
	pop3-ssl$(EXEEXT) pop3-tls$(EXEEXT) pop3-multi$(EXEEXT) \
	imap-list$(EXEEXT) imap-lsub$(EXEEXT) imap-fetch$(EXEEXT) \
	imap-store$(EXEEXT) imap-append$(EXEEXT) imap-examine$(EXEEXT) \
	imap-search$(EXEEXT) imap-create$(EXEEXT) imap-delete$(EXEEXT) \
	imap-copy$(EXEEXT) imap-noop$(EXEEXT) imap-ssl$(EXEEXT) \
	imap-tls$(EXEEXT) imap-multi$(EXEEXT) url2file$(EXEEXT) \
	sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT) \
	http2-download$(EXEEXT) http2-upload$(EXEEXT) \
	http2-serverpush$(EXEEXT) getredirect$(EXEEXT) \
	ftpuploadfrommem$(EXEEXT) ftpuploadresume$(EXEEXT) \
	sslbackend$(EXEEXT) postit2-formadd$(EXEEXT) \
	multi-formadd$(EXEEXT) shared-connection-cache$(EXEEXT) \
	sftpuploadresume$(EXEEXT) http2-pushinmemory$(EXEEXT) \



	parseurl$(EXEEXT) urlapi$(EXEEXT) imap-authzid$(EXEEXT) \




	pop3-authzid$(EXEEXT) smtp-authzid$(EXEEXT) http3$(EXEEXT) \

	altsvc$(EXEEXT) http3-present$(EXEEXT) multi-poll$(EXEEXT) \














	httpput-postfields$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
>
|
|
<
<
<
<
<
<
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<
|
<
<

|
|
|
>
>
>
|
>
>
>
>
|
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|







128
129
130
131
132
133
134
135
136
137
138








139












140


141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
	anyauthput$(EXEEXT) certinfo$(EXEEXT) chkspeed$(EXEEXT) \
	cookie_interface$(EXEEXT) debug$(EXEEXT) \
	externalsocket$(EXEEXT) fileupload$(EXEEXT) fopen$(EXEEXT) \








	ftp-wildcard$(EXEEXT) ftpget$(EXEEXT) ftpgetinfo$(EXEEXT) \












	ftpgetresp$(EXEEXT) ftpsget$(EXEEXT) ftpupload$(EXEEXT) \


	ftpuploadfrommem$(EXEEXT) ftpuploadresume$(EXEEXT) \
	getinfo$(EXEEXT) getinmemory$(EXEEXT) getredirect$(EXEEXT) \
	getreferrer$(EXEEXT) http-post$(EXEEXT) \
	http2-download$(EXEEXT) http2-pushinmemory$(EXEEXT) \
	http2-serverpush$(EXEEXT) http2-upload$(EXEEXT) http3$(EXEEXT) \
	http3-present$(EXEEXT) httpcustomheader$(EXEEXT) \
	httpput$(EXEEXT) httpput-postfields$(EXEEXT) https$(EXEEXT) \
	imap-append$(EXEEXT) imap-authzid$(EXEEXT) imap-copy$(EXEEXT) \
	imap-create$(EXEEXT) imap-delete$(EXEEXT) \
	imap-examine$(EXEEXT) imap-fetch$(EXEEXT) imap-list$(EXEEXT) \
	imap-lsub$(EXEEXT) imap-multi$(EXEEXT) imap-noop$(EXEEXT) \
	imap-search$(EXEEXT) imap-ssl$(EXEEXT) imap-store$(EXEEXT) \
	imap-tls$(EXEEXT) multi-app$(EXEEXT) \
	multi-debugcallback$(EXEEXT) multi-double$(EXEEXT) \
	multi-formadd$(EXEEXT) multi-poll$(EXEEXT) multi-post$(EXEEXT) \
	multi-single$(EXEEXT) parseurl$(EXEEXT) persistent$(EXEEXT) \
	pop3-authzid$(EXEEXT) pop3-dele$(EXEEXT) pop3-list$(EXEEXT) \
	pop3-multi$(EXEEXT) pop3-noop$(EXEEXT) pop3-retr$(EXEEXT) \
	pop3-ssl$(EXEEXT) pop3-stat$(EXEEXT) pop3-tls$(EXEEXT) \
	pop3-top$(EXEEXT) pop3-uidl$(EXEEXT) post-callback$(EXEEXT) \
	postinmemory$(EXEEXT) postit2$(EXEEXT) \
	postit2-formadd$(EXEEXT) progressfunc$(EXEEXT) \
	resolve$(EXEEXT) rtsp$(EXEEXT) sendrecv$(EXEEXT) \
	sepheaders$(EXEEXT) sftpget$(EXEEXT) sftpuploadresume$(EXEEXT) \
	shared-connection-cache$(EXEEXT) simple$(EXEEXT) \
	simplepost$(EXEEXT) simplessl$(EXEEXT) smtp-authzid$(EXEEXT) \
	smtp-expn$(EXEEXT) smtp-mail$(EXEEXT) smtp-mime$(EXEEXT) \
	smtp-multi$(EXEEXT) smtp-ssl$(EXEEXT) smtp-tls$(EXEEXT) \
	smtp-vrfy$(EXEEXT) sslbackend$(EXEEXT) url2file$(EXEEXT) \
	urlapi$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
339
340
341
342
343
344
345







346
347
348
349
350
351
352
getredirect_SOURCES = getredirect.c
getredirect_OBJECTS = getredirect.$(OBJEXT)
getredirect_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@getredirect_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@getredirect_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la







http_post_SOURCES = http-post.c
http_post_OBJECTS = http-post.$(OBJEXT)
http_post_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@http_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@http_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la







>
>
>
>
>
>
>







340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
getredirect_SOURCES = getredirect.c
getredirect_OBJECTS = getredirect.$(OBJEXT)
getredirect_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@getredirect_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@getredirect_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
getreferrer_SOURCES = getreferrer.c
getreferrer_OBJECTS = getreferrer.$(OBJEXT)
getreferrer_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@getreferrer_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@getreferrer_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
http_post_SOURCES = http-post.c
http_post_OBJECTS = http-post.$(OBJEXT)
http_post_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@http_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@http_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
865
866
867
868
869
870
871

872
873
874
875
876
877
878
879
	./$(DEPDIR)/externalsocket.Po ./$(DEPDIR)/fileupload.Po \
	./$(DEPDIR)/fopen.Po ./$(DEPDIR)/ftp-wildcard.Po \
	./$(DEPDIR)/ftpget.Po ./$(DEPDIR)/ftpgetinfo.Po \
	./$(DEPDIR)/ftpgetresp.Po ./$(DEPDIR)/ftpsget.Po \
	./$(DEPDIR)/ftpupload.Po ./$(DEPDIR)/ftpuploadfrommem.Po \
	./$(DEPDIR)/ftpuploadresume.Po ./$(DEPDIR)/getinfo.Po \
	./$(DEPDIR)/getinmemory.Po ./$(DEPDIR)/getredirect.Po \

	./$(DEPDIR)/http-post.Po ./$(DEPDIR)/http2-download.Po \
	./$(DEPDIR)/http2-pushinmemory.Po \
	./$(DEPDIR)/http2-serverpush.Po ./$(DEPDIR)/http2-upload.Po \
	./$(DEPDIR)/http3-present.Po ./$(DEPDIR)/http3.Po \
	./$(DEPDIR)/httpcustomheader.Po \
	./$(DEPDIR)/httpput-postfields.Po ./$(DEPDIR)/httpput.Po \
	./$(DEPDIR)/https.Po ./$(DEPDIR)/imap-append.Po \
	./$(DEPDIR)/imap-authzid.Po ./$(DEPDIR)/imap-copy.Po \







>
|







873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
	./$(DEPDIR)/externalsocket.Po ./$(DEPDIR)/fileupload.Po \
	./$(DEPDIR)/fopen.Po ./$(DEPDIR)/ftp-wildcard.Po \
	./$(DEPDIR)/ftpget.Po ./$(DEPDIR)/ftpgetinfo.Po \
	./$(DEPDIR)/ftpgetresp.Po ./$(DEPDIR)/ftpsget.Po \
	./$(DEPDIR)/ftpupload.Po ./$(DEPDIR)/ftpuploadfrommem.Po \
	./$(DEPDIR)/ftpuploadresume.Po ./$(DEPDIR)/getinfo.Po \
	./$(DEPDIR)/getinmemory.Po ./$(DEPDIR)/getredirect.Po \
	./$(DEPDIR)/getreferrer.Po ./$(DEPDIR)/http-post.Po \
	./$(DEPDIR)/http2-download.Po \
	./$(DEPDIR)/http2-pushinmemory.Po \
	./$(DEPDIR)/http2-serverpush.Po ./$(DEPDIR)/http2-upload.Po \
	./$(DEPDIR)/http3-present.Po ./$(DEPDIR)/http3.Po \
	./$(DEPDIR)/httpcustomheader.Po \
	./$(DEPDIR)/httpput-postfields.Po ./$(DEPDIR)/httpput.Po \
	./$(DEPDIR)/https.Po ./$(DEPDIR)/imap-append.Po \
	./$(DEPDIR)/imap-authzid.Po ./$(DEPDIR)/imap-copy.Po \
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971























972
973
974
975
976
977
978
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 = 
SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c chkspeed.c \
	cookie_interface.c debug.c externalsocket.c fileupload.c \
	fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
	ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
	getinfo.c getinmemory.c getredirect.c http-post.c \
	http2-download.c http2-pushinmemory.c http2-serverpush.c \
	http2-upload.c http3.c http3-present.c httpcustomheader.c \
	httpput.c httpput-postfields.c https.c imap-append.c \
	imap-authzid.c imap-copy.c imap-create.c imap-delete.c \
	imap-examine.c imap-fetch.c imap-list.c imap-lsub.c \
	imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c \
	imap-tls.c multi-app.c multi-debugcallback.c multi-double.c \
	multi-formadd.c multi-poll.c multi-post.c multi-single.c \
	parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
	pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
	pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
	postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
	resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
	sftpuploadresume.c shared-connection-cache.c simple.c \
	simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
	smtp-vrfy.c sslbackend.c url2file.c urlapi.c
DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \
	chkspeed.c cookie_interface.c debug.c externalsocket.c \
	fileupload.c fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c \
	ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c \
	ftpuploadresume.c getinfo.c getinmemory.c getredirect.c \
	http-post.c http2-download.c http2-pushinmemory.c \
	http2-serverpush.c http2-upload.c http3.c http3-present.c \
	httpcustomheader.c httpput.c httpput-postfields.c https.c \
	imap-append.c imap-authzid.c imap-copy.c imap-create.c \
	imap-delete.c imap-examine.c imap-fetch.c imap-list.c \
	imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c \
	imap-store.c imap-tls.c multi-app.c multi-debugcallback.c \
	multi-double.c multi-formadd.c multi-poll.c multi-post.c \
	multi-single.c parseurl.c persistent.c pop3-authzid.c \
	pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c \
	pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c \
	post-callback.c postinmemory.c postit2.c postit2-formadd.c \
	progressfunc.c resolve.c rtsp.c sendrecv.c sepheaders.c \
	sftpget.c sftpuploadresume.c shared-connection-cache.c \
	simple.c simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \























	smtp-vrfy.c sslbackend.c url2file.c urlapi.c
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)







|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
















>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







935
936
937
938
939
940
941
942






















943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 = 
SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c chkspeed.c \
	cookie_interface.c debug.c externalsocket.c fileupload.c \
	fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
	ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
	getinfo.c getinmemory.c getredirect.c getreferrer.c \






















	http-post.c http2-download.c http2-pushinmemory.c \
	http2-serverpush.c http2-upload.c http3.c http3-present.c \
	httpcustomheader.c httpput.c httpput-postfields.c https.c \
	imap-append.c imap-authzid.c imap-copy.c imap-create.c \
	imap-delete.c imap-examine.c imap-fetch.c imap-list.c \
	imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c \
	imap-store.c imap-tls.c multi-app.c multi-debugcallback.c \
	multi-double.c multi-formadd.c multi-poll.c multi-post.c \
	multi-single.c parseurl.c persistent.c pop3-authzid.c \
	pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c \
	pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c \
	post-callback.c postinmemory.c postit2.c postit2-formadd.c \
	progressfunc.c resolve.c rtsp.c sendrecv.c sepheaders.c \
	sftpget.c sftpuploadresume.c shared-connection-cache.c \
	simple.c simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
	smtp-vrfy.c sslbackend.c url2file.c urlapi.c
DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \
	chkspeed.c cookie_interface.c debug.c externalsocket.c \
	fileupload.c fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c \
	ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c \
	ftpuploadresume.c getinfo.c getinmemory.c getredirect.c \
	getreferrer.c http-post.c http2-download.c \
	http2-pushinmemory.c http2-serverpush.c http2-upload.c http3.c \
	http3-present.c httpcustomheader.c httpput.c \
	httpput-postfields.c https.c imap-append.c imap-authzid.c \
	imap-copy.c imap-create.c imap-delete.c imap-examine.c \
	imap-fetch.c imap-list.c imap-lsub.c imap-multi.c imap-noop.c \
	imap-search.c imap-ssl.c imap-store.c imap-tls.c multi-app.c \
	multi-debugcallback.c multi-double.c multi-formadd.c \
	multi-poll.c multi-post.c multi-single.c parseurl.c \
	persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
	pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
	pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
	postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
	resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
	sftpuploadresume.c shared-connection-cache.c simple.c \
	simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
	smtp-vrfy.c sslbackend.c url2file.c urlapi.c
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148

1149
1150
1151



1152
1153
1154
1155
1156
1157
1158
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







1137
1138
1139
1140
1141
1142
1143

1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
1229
1230
1231
1232
1233
1234
1235
1236














1237
1238

1239


1240
1241


1242
1243
1244
1245
1246
1247
1248
@USE_EXPLICIT_LIB_DEPS_FALSE@LDADD = $(LIBDIR)/libcurl.la

# Dependencies
@USE_EXPLICIT_LIB_DEPS_TRUE@LDADD = $(LIBDIR)/libcurl.la @LIBCURL_LIBS@

# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \














  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \

  smooth-gtk-thread.c version-check.pl href_extractor.c \


  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
  threaded-shared-conn.c crawler.c ephiperfifo.c multi-event.c



CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 = 
CS_ = $(CS_0)
all: all-am








|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
|
>
>
|
<
>
>







1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270

1271
1272
1273
1274
1275
1276
1277
1278
1279
@USE_EXPLICIT_LIB_DEPS_FALSE@LDADD = $(LIBDIR)/libcurl.la

# Dependencies
@USE_EXPLICIT_LIB_DEPS_TRUE@LDADD = $(LIBDIR)/libcurl.la @LIBCURL_LIBS@

# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = \
  cacertinmem.c \
  crawler.c \
  curlgtk.c \
  curlx.c \
  ephiperfifo.c \
  evhiperfifo.c \
  ghiper.c \
  hiperfifo.c \
  href_extractor.c \
  htmltidy.c \
  htmltitle.cpp \
  multi-event.c \
  multi-uv.c \
  multithread.c \
  opensslthreadlock.c \
  sampleconv.c \
  sessioninfo.c \
  smooth-gtk-thread.c \
  synctime.c \
  threaded-ssl.c \
  usercertinmem.c \

  version-check.pl \
  xmlstream.c

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 = 
CS_ = $(CS_0)
all: all-am

1367
1368
1369
1370
1371
1372
1373




1374
1375
1376
1377
1378
1379
1380
getinmemory$(EXEEXT): $(getinmemory_OBJECTS) $(getinmemory_DEPENDENCIES) $(EXTRA_getinmemory_DEPENDENCIES) 
	@rm -f getinmemory$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(getinmemory_OBJECTS) $(getinmemory_LDADD) $(LIBS)

getredirect$(EXEEXT): $(getredirect_OBJECTS) $(getredirect_DEPENDENCIES) $(EXTRA_getredirect_DEPENDENCIES) 
	@rm -f getredirect$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(getredirect_OBJECTS) $(getredirect_LDADD) $(LIBS)





http-post$(EXEEXT): $(http_post_OBJECTS) $(http_post_DEPENDENCIES) $(EXTRA_http_post_DEPENDENCIES) 
	@rm -f http-post$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(http_post_OBJECTS) $(http_post_LDADD) $(LIBS)

http2-download$(EXEEXT): $(http2_download_OBJECTS) $(http2_download_DEPENDENCIES) $(EXTRA_http2_download_DEPENDENCIES) 
	@rm -f http2-download$(EXEEXT)







>
>
>
>







1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
getinmemory$(EXEEXT): $(getinmemory_OBJECTS) $(getinmemory_DEPENDENCIES) $(EXTRA_getinmemory_DEPENDENCIES) 
	@rm -f getinmemory$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(getinmemory_OBJECTS) $(getinmemory_LDADD) $(LIBS)

getredirect$(EXEEXT): $(getredirect_OBJECTS) $(getredirect_DEPENDENCIES) $(EXTRA_getredirect_DEPENDENCIES) 
	@rm -f getredirect$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(getredirect_OBJECTS) $(getredirect_LDADD) $(LIBS)

getreferrer$(EXEEXT): $(getreferrer_OBJECTS) $(getreferrer_DEPENDENCIES) $(EXTRA_getreferrer_DEPENDENCIES) 
	@rm -f getreferrer$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(getreferrer_OBJECTS) $(getreferrer_LDADD) $(LIBS)

http-post$(EXEEXT): $(http_post_OBJECTS) $(http_post_DEPENDENCIES) $(EXTRA_http_post_DEPENDENCIES) 
	@rm -f http-post$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(http_post_OBJECTS) $(http_post_LDADD) $(LIBS)

http2-download$(EXEEXT): $(http2_download_OBJECTS) $(http2_download_DEPENDENCIES) $(EXTRA_http2_download_DEPENDENCIES) 
	@rm -f http2-download$(EXEEXT)
1683
1684
1685
1686
1687
1688
1689

1690
1691
1692
1693
1694
1695
1696
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpsget.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpupload.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpuploadfrommem.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpuploadresume.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinfo.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getredirect.Po@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-post.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-download.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-pushinmemory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-serverpush.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-upload.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http3-present.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http3.Po@am__quote@ # am--include-marker







>







1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpsget.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpupload.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpuploadfrommem.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpuploadresume.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinfo.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getredirect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getreferrer.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-post.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-download.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-pushinmemory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-serverpush.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-upload.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http3-present.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http3.Po@am__quote@ # am--include-marker
1939
1940
1941
1942
1943
1944
1945

1946
1947
1948
1949
1950
1951
1952
	-rm -f ./$(DEPDIR)/ftpsget.Po
	-rm -f ./$(DEPDIR)/ftpupload.Po
	-rm -f ./$(DEPDIR)/ftpuploadfrommem.Po
	-rm -f ./$(DEPDIR)/ftpuploadresume.Po
	-rm -f ./$(DEPDIR)/getinfo.Po
	-rm -f ./$(DEPDIR)/getinmemory.Po
	-rm -f ./$(DEPDIR)/getredirect.Po

	-rm -f ./$(DEPDIR)/http-post.Po
	-rm -f ./$(DEPDIR)/http2-download.Po
	-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
	-rm -f ./$(DEPDIR)/http2-serverpush.Po
	-rm -f ./$(DEPDIR)/http2-upload.Po
	-rm -f ./$(DEPDIR)/http3-present.Po
	-rm -f ./$(DEPDIR)/http3.Po







>







1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
	-rm -f ./$(DEPDIR)/ftpsget.Po
	-rm -f ./$(DEPDIR)/ftpupload.Po
	-rm -f ./$(DEPDIR)/ftpuploadfrommem.Po
	-rm -f ./$(DEPDIR)/ftpuploadresume.Po
	-rm -f ./$(DEPDIR)/getinfo.Po
	-rm -f ./$(DEPDIR)/getinmemory.Po
	-rm -f ./$(DEPDIR)/getredirect.Po
	-rm -f ./$(DEPDIR)/getreferrer.Po
	-rm -f ./$(DEPDIR)/http-post.Po
	-rm -f ./$(DEPDIR)/http2-download.Po
	-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
	-rm -f ./$(DEPDIR)/http2-serverpush.Po
	-rm -f ./$(DEPDIR)/http2-upload.Po
	-rm -f ./$(DEPDIR)/http3-present.Po
	-rm -f ./$(DEPDIR)/http3.Po
2077
2078
2079
2080
2081
2082
2083

2084
2085
2086
2087
2088
2089
2090
	-rm -f ./$(DEPDIR)/ftpsget.Po
	-rm -f ./$(DEPDIR)/ftpupload.Po
	-rm -f ./$(DEPDIR)/ftpuploadfrommem.Po
	-rm -f ./$(DEPDIR)/ftpuploadresume.Po
	-rm -f ./$(DEPDIR)/getinfo.Po
	-rm -f ./$(DEPDIR)/getinmemory.Po
	-rm -f ./$(DEPDIR)/getredirect.Po

	-rm -f ./$(DEPDIR)/http-post.Po
	-rm -f ./$(DEPDIR)/http2-download.Po
	-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
	-rm -f ./$(DEPDIR)/http2-serverpush.Po
	-rm -f ./$(DEPDIR)/http2-upload.Po
	-rm -f ./$(DEPDIR)/http3-present.Po
	-rm -f ./$(DEPDIR)/http3.Po







>







2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
	-rm -f ./$(DEPDIR)/ftpsget.Po
	-rm -f ./$(DEPDIR)/ftpupload.Po
	-rm -f ./$(DEPDIR)/ftpuploadfrommem.Po
	-rm -f ./$(DEPDIR)/ftpuploadresume.Po
	-rm -f ./$(DEPDIR)/getinfo.Po
	-rm -f ./$(DEPDIR)/getinmemory.Po
	-rm -f ./$(DEPDIR)/getredirect.Po
	-rm -f ./$(DEPDIR)/getreferrer.Po
	-rm -f ./$(DEPDIR)/http-post.Po
	-rm -f ./$(DEPDIR)/http2-download.Po
	-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
	-rm -f ./$(DEPDIR)/http2-serverpush.Po
	-rm -f ./$(DEPDIR)/http2-upload.Po
	-rm -f ./$(DEPDIR)/http3-present.Po
	-rm -f ./$(DEPDIR)/http3.Po
Changes to jni/curl/docs/examples/Makefile.inc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24



















25


26
27






28












29
30
31


32














33







34
35

36







37



38



39






40
41
42
43














44
45

46


47
48


#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################

# These are all libcurl example programs to be test compiled
check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \



















  fopen ftpget ftpgetresp ftpupload getinfo getinmemory http-post httpput  \


  https multi-app multi-debugcallback multi-double multi-post multi-single \
  persistent post-callback postit2 sepheaders simple simplepost simplessl  \






  sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard      \












  smtp-mail smtp-mime smtp-multi smtp-ssl smtp-tls smtp-vrfy smtp-expn     \
  rtsp externalsocket resolve progressfunc pop3-retr pop3-list pop3-uidl   \
  pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi      \


  imap-list imap-lsub imap-fetch imap-store imap-append imap-examine       \














  imap-search imap-create imap-delete imap-copy imap-noop imap-ssl         \







  imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
  http2-upload http2-serverpush getredirect ftpuploadfrommem               \

  ftpuploadresume sslbackend postit2-formadd multi-formadd                 \







  shared-connection-cache sftpuploadresume http2-pushinmemory parseurl     \



  urlapi imap-authzid pop3-authzid smtp-authzid http3 altsvc               \



  http3-present multi-poll httpput-postfields







# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \














  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \

  smooth-gtk-thread.c version-check.pl href_extractor.c \


  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
  threaded-shared-conn.c crawler.c ephiperfifo.c multi-event.c









|















|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
|
<
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
|
<
|
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
|
<
>
|
>
>
>
>
>
>
>
|
>
>
>
|
>
>
>
|
>
>
>
>
>
>



|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
|
>
>
|
<
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

144
145
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################

# These are all libcurl example programs to be test compiled
check_PROGRAMS = \
  10-at-a-time \
  altsvc \
  anyauthput \
  certinfo \
  chkspeed \
  cookie_interface \
  debug \
  externalsocket \
  fileupload \
  fopen \
  ftp-wildcard \
  ftpget \
  ftpgetinfo \
  ftpgetresp \
  ftpsget \
  ftpupload \
  ftpuploadfrommem \
  ftpuploadresume \
  getinfo \
  getinmemory \
  getredirect \
  getreferrer \
  http-post \

  http2-download \
  http2-pushinmemory \
  http2-serverpush \
  http2-upload \
  http3 \
  http3-present \
  httpcustomheader \
  httpput \
  httpput-postfields \
  https \
  imap-append \
  imap-authzid \
  imap-copy \
  imap-create \
  imap-delete \
  imap-examine \
  imap-fetch \
  imap-list \
  imap-lsub \
  imap-multi \

  imap-noop \
  imap-search \
  imap-ssl \
  imap-store \
  imap-tls \
  multi-app \
  multi-debugcallback \
  multi-double \
  multi-formadd \
  multi-poll \
  multi-post \
  multi-single \
  parseurl \
  persistent \
  pop3-authzid \
  pop3-dele \
  pop3-list \
  pop3-multi \
  pop3-noop \
  pop3-retr \
  pop3-ssl \
  pop3-stat \
  pop3-tls \
  pop3-top \
  pop3-uidl \
  post-callback \
  postinmemory \

  postit2 \
  postit2-formadd \
  progressfunc \
  resolve \
  rtsp \
  sendrecv \
  sepheaders \
  sftpget \
  sftpuploadresume \
  shared-connection-cache \
  simple \
  simplepost \
  simplessl \
  smtp-authzid \
  smtp-expn \
  smtp-mail \
  smtp-mime \
  smtp-multi \
  smtp-ssl \
  smtp-tls \
  smtp-vrfy \
  sslbackend \
  url2file \
  urlapi

# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = \
  cacertinmem.c \
  crawler.c \
  curlgtk.c \
  curlx.c \
  ephiperfifo.c \
  evhiperfifo.c \
  ghiper.c \
  hiperfifo.c \
  href_extractor.c \
  htmltidy.c \
  htmltitle.cpp \
  multi-event.c \
  multi-uv.c \
  multithread.c \
  opensslthreadlock.c \
  sampleconv.c \
  sessioninfo.c \
  smooth-gtk-thread.c \
  synctime.c \
  threaded-ssl.c \
  usercertinmem.c \

  version-check.pl \
  xmlstream.c
Changes to jni/curl/docs/examples/Makefile.m32.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
66
67
68
69
70
71
72




73
74
75
76
77
78
79
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
LIBEXPAT_PATH = ../../../expat-2.1.0
endif
# Edit the path below to point to the base of your libxml2 package.
ifndef LIBXML2_PATH
LIBXML2_PATH = ../../../libxml2-2.9.2




endif
# Edit the path below to point to the base of your libidn2 package.
ifndef LIBIDN2_PATH
LIBIDN2_PATH = ../../../libidn2-2.0.3
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1







>
>
>
>







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
LIBEXPAT_PATH = ../../../expat-2.1.0
endif
# Edit the path below to point to the base of your libxml2 package.
ifndef LIBXML2_PATH
LIBXML2_PATH = ../../../libxml2-2.9.2
endif
# Edit the path below to point to the base of your libgsasl package.
ifndef LIBGSASL_PATH
LIBGSASL_PATH = ../../../libgsasl-1.10.0
endif
# Edit the path below to point to the base of your libidn2 package.
ifndef LIBIDN2_PATH
LIBIDN2_PATH = ../../../libidn2-2.0.3
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
193
194
195
196
197
198
199



200
201
202
203
204
205
206
ZLIB = 1
endif
ifeq ($(findstring -zstd,$(CFG)),-zstd)
ZSTD = 1
endif
ifeq ($(findstring -brotli,$(CFG)),-brotli)
BROTLI = 1



endif
ifeq ($(findstring -idn2,$(CFG)),-idn2)
IDN2 = 1
endif
ifeq ($(findstring -winidn,$(CFG)),-winidn)
WINIDN = 1
endif







>
>
>







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
ZLIB = 1
endif
ifeq ($(findstring -zstd,$(CFG)),-zstd)
ZSTD = 1
endif
ifeq ($(findstring -brotli,$(CFG)),-brotli)
BROTLI = 1
endif
ifeq ($(findstring -gsasl,$(CFG)),-gsasl)
GSASL = 1
endif
ifeq ($(findstring -idn2,$(CFG)),-idn2)
IDN2 = 1
endif
ifeq ($(findstring -winidn,$(CFG)),-winidn)
WINIDN = 1
endif
330
331
332
333
334
335
336




337
338
339
340
341
342
343
  curl_LDADD += -L"$(BROTLI_PATH)/lib"
  ifdef BROTLI_LIBS
    curl_LDADD += $(BROTLI_LIBS)
  else
    curl_LDADD += -lbrotlidec
  endif
endif




ifdef IDN2
  CFLAGS += -DUSE_LIBIDN2
  curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
else
ifdef WINIDN
  CFLAGS += -DUSE_WIN32_IDN
  curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz







>
>
>
>







337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
  curl_LDADD += -L"$(BROTLI_PATH)/lib"
  ifdef BROTLI_LIBS
    curl_LDADD += $(BROTLI_LIBS)
  else
    curl_LDADD += -lbrotlidec
  endif
endif
ifdef GSASL
  CFLAGS += -DUSE_GSASL
  curl_LDADD += -L"$(LIBGSASL_PATH)/lib" -lgsasl
endif
ifdef IDN2
  CFLAGS += -DUSE_LIBIDN2
  curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
else
ifdef WINIDN
  CFLAGS += -DUSE_WIN32_IDN
  curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
Added jni/curl/docs/examples/getreferrer.c.


















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
/* <DESC>
 * Show how to extract referrer header.
 * </DESC>
 */
#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;

  curl = curl_easy_init();
  if(curl) {
    CURLcode res;

    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
    curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.org/referrer");

    /* Perform the request, res will get the return code */
    res = curl_easy_perform(curl);
    /* Check for errors */
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
    else {
      char *hdr;
      res = curl_easy_getinfo(curl, CURLINFO_REFERER, &hdr);
      if((res == CURLE_OK) && hdr)
        printf("Referrer header: %s\n", hdr);
    }

    /* always cleanup */
    curl_easy_cleanup(curl);
  }
  return 0;
}
Deleted jni/curl/docs/examples/threaded-shared-conn.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
/* <DESC>
 * Multi-threaded transfers sharing a single connection pool
 * </DESC>
 *
 * This example fires up NUM_THREADS threads and in each single thread, it
 * downloads the same fixed URL a URL_ITERATIONS number of times. The received
 * data is just thrown away. It sets up a single shared object that holds the
 * connection cache and all easy handles in all threads share that same cache.
 *
 * This example uses pthreads for threads and mutexes, but should be easy to
 * modify to use different thread/mutex system should you want to.
 *
 */

#include <stdio.h>
#include <pthread.h>
#include <curl/curl.h>

/*
  URL to fetch. If you select HTTPS, you need to use a TLS backend with mutex
  locks taken care of (OpenSSL 1.1.x, NSS, etc) or add SSL mutex callbacks!
*/
#define URL "http://localhost/4KB"

/* number of threads to fire up in parallel */
#define NUM_THREADS 67

/* how many times each URL is transferred per thread */
#define URL_ITERATIONS 11235

static pthread_mutex_t connlock;

static size_t write_db(void *ptr, size_t size, size_t nmemb, void *data)
{
  /* not interested in the downloaded bytes, return the size */
  (void)ptr;  /* unused */
  (void)data; /* unused */
  return (size_t)(size * nmemb);
}

static void lock_cb(CURL *handle, curl_lock_data data,
                    curl_lock_access access, void *userptr)
{
  (void)access; /* unused */
  (void)userptr; /* unused */
  (void)handle; /* unused */
  (void)data; /* unused */
  pthread_mutex_lock(&connlock);
}

static void unlock_cb(CURL *handle, curl_lock_data data,
                      void *userptr)
{
  (void)userptr; /* unused */
  (void)handle;  /* unused */
  (void)data;    /* unused */
  pthread_mutex_unlock(&connlock);
}

static void init_locks(void)
{
  pthread_mutex_init(&connlock, NULL);
}

static void kill_locks(void)
{
  pthread_mutex_destroy(&connlock);
}

struct initurl {
  const char *url;
  CURLSH *share;
  int threadno;
};

static void *run_thread(void *ptr)
{
  struct initurl *u = (struct initurl *)ptr;
  int i;

  for(i = 0; i < URL_ITERATIONS; i++) {
    CURL *curl = curl_easy_init();
    curl_easy_setopt(curl, CURLOPT_URL, u->url);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
    curl_easy_setopt(curl, CURLOPT_SHARE, u->share);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_db);
    curl_easy_perform(curl); /* ignores error */
    curl_easy_cleanup(curl);
    fprintf(stderr, "Thread %d transfer %d\n", u->threadno, i);
  }

  return NULL;
}

int main(void)
{
  pthread_t tid[NUM_THREADS];
  int i;
  CURLSH *share;
  struct initurl url[NUM_THREADS];

  /* Must initialize libcurl before any threads are started */
  curl_global_init(CURL_GLOBAL_ALL);

  share = curl_share_init();
  curl_share_setopt(share, CURLSHOPT_LOCKFUNC, lock_cb);
  curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, unlock_cb);
  curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);

  init_locks();

  for(i = 0; i< NUM_THREADS; i++) {
    int error;
    url[i].url = URL;
    url[i].share = share;
    url[i].threadno = i;
    error = pthread_create(&tid[i], NULL, run_thread, &url[i]);
    if(0 != error)
      fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
    else
      fprintf(stderr, "Thread %d, gets %s\n", i, URL);
  }

  /* now wait for all threads to terminate */
  for(i = 0; i< NUM_THREADS; i++) {
    pthread_join(tid[i], NULL);
    fprintf(stderr, "Thread %d terminated\n", i);
  }

  kill_locks();

  curl_share_cleanup(share);
  curl_global_cleanup();
  return 0;
}
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
























































































































































































































































































































Changes to jni/curl/docs/libcurl/ABI.md.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22


23
24
25
26
27
28
29
ABI - Application Binary Interface
==================================

 "ABI" describes the low-level interface between an application program and a
 library. Calling conventions, function arguments, return values, struct
 sizes/defines and more.

 [Wikipedia has a longer description](https://en.wikipedia.org/wiki/Application_binary_interface)

## Upgrades

 In the vast majority of all cases, a typical libcurl upgrade does not break
 the ABI at all. Your application can remain using libcurl just as before,
 only with less bugs and possibly with added new features. You need to read
 the release notes, and if they mention an ABI break/soname bump, you may have
 to verify that your application still builds fine and uses libcurl as it now
 is defined to work.

## Version Numbers

 In libcurl land, you really can't tell by the libcurl version number if that
 libcurl is binary compatible or not with another libcurl version.



## Soname Bumps

 Whenever there are changes done to the library that will cause an ABI
 breakage, that may require your application to get attention or possibly be
 changed to adhere to new things, we will bump the soname. Then the library
 will get a different output name and thus can in fact be installed in











|
|
|
<
<
<



|
|
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14



15
16
17
18
19
20
21
22
23
24
25
26
27
28
ABI - Application Binary Interface
==================================

 "ABI" describes the low-level interface between an application program and a
 library. Calling conventions, function arguments, return values, struct
 sizes/defines and more.

 [Wikipedia has a longer description](https://en.wikipedia.org/wiki/Application_binary_interface)

## Upgrades

 A libcurl upgrade does not break the ABI or change established and documented
 behavior. Your application can remain using libcurl just as before, only with
 less bugs and possibly with added new features.




## Version Numbers

 In libcurl land, you cannot tell by the libcurl version number if that
 libcurl is binary compatible or not with another libcurl version. As a rule,
 we don't break the ABI so you can *always* upgrade to a later version without
 any loss or change in functionality.

## Soname Bumps

 Whenever there are changes done to the library that will cause an ABI
 breakage, that may require your application to get attention or possibly be
 changed to adhere to new things, we will bump the soname. Then the library
 will get a different output name and thus can in fact be installed in
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 doesn't support the options your application needs. Or possibly you even
 downgrade so far so you cross an ABI break border and thus a different
 soname, and then your application may need to adapt to the modified ABI.

## History

 The previous major library soname number bumps (breaking backwards
 compatibility) have happened the following times:

 0 - libcurl 7.1,   August 2000

 1 - libcurl 7.5    December 2000

 2 - libcurl 7.7    March 2001

 3 - libcurl 7.12.0 June 2004

 4 - libcurl 7.16.0 October 2006







|










45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 doesn't support the options your application needs. Or possibly you even
 downgrade so far so you cross an ABI break border and thus a different
 soname, and then your application may need to adapt to the modified ABI.

## History

 The previous major library soname number bumps (breaking backwards
 compatibility) happened the following times:

 0 - libcurl 7.1,   August 2000

 1 - libcurl 7.5    December 2000

 2 - libcurl 7.7    March 2001

 3 - libcurl 7.12.0 June 2004

 4 - libcurl 7.16.0 October 2006
Changes to jni/curl/docs/libcurl/Makefile.in.
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602

603
604
605



606
607
608
609
610
611
612
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







581
582
583
584
585
586
587

588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/docs/libcurl/curl_easy_cleanup.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_cleanup(CURL *" handle ");"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_cleanup(CURL *" handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_duphandle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_duphandle(CURL *"handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_duphandle(CURL *"handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_escape.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "November 09, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_escape( CURL *" curl ", const char *" string







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "November 09, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_escape( CURL *" curl ", const char *" string
Changes to jni/curl/docs/libcurl/curl_easy_getinfo.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "February 19, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"
47
48
49
50
51
52
53



54
55
56
57
58
59
60
See \fICURLINFO_EFFECTIVE_METHOD(3)\fP
.IP CURLINFO_EFFECTIVE_URL
Last used URL.
See \fICURLINFO_EFFECTIVE_URL(3)\fP
.IP CURLINFO_RESPONSE_CODE
Last received response code.
See \fICURLINFO_RESPONSE_CODE(3)\fP



.IP CURLINFO_HTTP_CONNECTCODE
Last proxy CONNECT response code.
See \fICURLINFO_HTTP_CONNECTCODE(3)\fP
.IP CURLINFO_HTTP_VERSION
The http version used in the connection.
See \fICURLINFO_HTTP_VERSION(3)\fP
.IP CURLINFO_FILETIME







>
>
>







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
See \fICURLINFO_EFFECTIVE_METHOD(3)\fP
.IP CURLINFO_EFFECTIVE_URL
Last used URL.
See \fICURLINFO_EFFECTIVE_URL(3)\fP
.IP CURLINFO_RESPONSE_CODE
Last received response code.
See \fICURLINFO_RESPONSE_CODE(3)\fP
.IP CURLINFO_REFERER
Referrer header.
See \fICURLINFO_REFERER(3)\fP
.IP CURLINFO_HTTP_CONNECTCODE
Last proxy CONNECT response code.
See \fICURLINFO_HTTP_CONNECTCODE(3)\fP
.IP CURLINFO_HTTP_VERSION
The http version used in the connection.
See \fICURLINFO_HTTP_VERSION(3)\fP
.IP CURLINFO_FILETIME
Changes to jni/curl/docs/libcurl/curl_easy_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "December 31, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "December 31, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_init( );"
Changes to jni/curl/docs/libcurl/curl_easy_option_by_id.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_id 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_option_by_id - find an easy setopt option by id
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_id 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_option_by_id - find an easy setopt option by id
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_option_by_name.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_name 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_option_by_name - find an easy setopt option by name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_name 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_option_by_name - find an easy setopt option by name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_option_next.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_option_next 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_option_next - iterate over easy setopt options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_option_next 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_option_next - iterate over easy setopt options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_pause.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "December 22, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_pause - pause and unpause a connection
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "December 22, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_pause - pause and unpause a connection
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_perform.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_perform(CURL *" easy_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_perform(CURL *" easy_handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_recv.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_recv( CURL *" curl ", void *" buffer ","







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_recv( CURL *" curl ", void *" buffer ","
Changes to jni/curl/docs/libcurl/curl_easy_reset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_reset(CURL *"handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_reset(CURL *"handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_send.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_send( CURL *" curl ", const void *" buffer ","







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_send( CURL *" curl ", const void *" buffer ","
Changes to jni/curl/docs/libcurl/curl_easy_setopt.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "July 03, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "March 26, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
562
563
564
565
566
567
568



569
570
571
572



573
574
575
576



577
578
579
580
581
582
583
Enable TLS False Start. See \fICURLOPT_SSL_FALSESTART(3)\fP
.IP CURLOPT_SSLVERSION
SSL version to use. See \fICURLOPT_SSLVERSION(3)\fP
.IP CURLOPT_PROXY_SSLVERSION
Proxy SSL version to use. See \fICURLOPT_PROXY_SSLVERSION(3)\fP
.IP CURLOPT_SSL_VERIFYHOST
Verify the host name in the SSL certificate. See \fICURLOPT_SSL_VERIFYHOST(3)\fP



.IP CURLOPT_PROXY_SSL_VERIFYHOST
Verify the host name in the proxy SSL certificate. See \fICURLOPT_PROXY_SSL_VERIFYHOST(3)\fP
.IP CURLOPT_SSL_VERIFYPEER
Verify the SSL certificate. See \fICURLOPT_SSL_VERIFYPEER(3)\fP



.IP CURLOPT_PROXY_SSL_VERIFYPEER
Verify the proxy SSL certificate. See \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP
.IP CURLOPT_SSL_VERIFYSTATUS
Verify the SSL certificate's status. See \fICURLOPT_SSL_VERIFYSTATUS(3)\fP



.IP CURLOPT_CAINFO
CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
.IP CURLOPT_PROXY_CAINFO
Proxy CA cert bundle. See \fICURLOPT_PROXY_CAINFO(3)\fP
.IP CURLOPT_ISSUERCERT
Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
.IP CURLOPT_ISSUERCERT_BLOB







>
>
>




>
>
>




>
>
>







562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
Enable TLS False Start. See \fICURLOPT_SSL_FALSESTART(3)\fP
.IP CURLOPT_SSLVERSION
SSL version to use. See \fICURLOPT_SSLVERSION(3)\fP
.IP CURLOPT_PROXY_SSLVERSION
Proxy SSL version to use. See \fICURLOPT_PROXY_SSLVERSION(3)\fP
.IP CURLOPT_SSL_VERIFYHOST
Verify the host name in the SSL certificate. See \fICURLOPT_SSL_VERIFYHOST(3)\fP
.IP CURLOPT_DOH_SSL_VERIFYHOST
Verify the host name in the DOH (DNS-over-HTTPS) SSL certificate. See
\fICURLOPT_DOH_SSL_VERIFYHOST(3)\fP
.IP CURLOPT_PROXY_SSL_VERIFYHOST
Verify the host name in the proxy SSL certificate. See \fICURLOPT_PROXY_SSL_VERIFYHOST(3)\fP
.IP CURLOPT_SSL_VERIFYPEER
Verify the SSL certificate. See \fICURLOPT_SSL_VERIFYPEER(3)\fP
.IP CURLOPT_DOH_SSL_VERIFYPEER
Verify the DOH (DNS-over-HTTPS) SSL certificate. See
\fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP
.IP CURLOPT_PROXY_SSL_VERIFYPEER
Verify the proxy SSL certificate. See \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP
.IP CURLOPT_SSL_VERIFYSTATUS
Verify the SSL certificate's status. See \fICURLOPT_SSL_VERIFYSTATUS(3)\fP
.IP CURLOPT_DOH_SSL_VERIFYSTATUS
Verify the DOH (DNS-over-HTTPS) SSL certificate's status. See
\fICURLOPT_DOH_SSL_VERIFYSTATUS(3)\fP
.IP CURLOPT_CAINFO
CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
.IP CURLOPT_PROXY_CAINFO
Proxy CA cert bundle. See \fICURLOPT_PROXY_CAINFO(3)\fP
.IP CURLOPT_ISSUERCERT
Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
.IP CURLOPT_ISSUERCERT_BLOB
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684


man page for the full list with descriptions.

Strings passed on to libcurl must be shorter than 8000000 bytes, otherwise
\fIcurl_easy_setopt(3)\fP returns \fBCURLE_BAD_FUNCTION_ARGUMENT\fP (added in
7.65.0).

\fBCURLE_BAD_FUNCTION_ARGUMENT\fP is returned when the argument to an option
is invalid, like perhaps out of range.a

If you try to set an option that libcurl doesn't know about, perhaps because
the library is too old to support it or the option was removed in a recent
version, this function will return \fICURLE_UNKNOWN_OPTION\fP. If support for
the option was disabled at compile-time, it will return
\fICURLE_NOT_BUILT_IN\fP.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  CURLcode res;
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
  res = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
.fi
.SH "SEE ALSO"
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
.BR curl_easy_getinfo "(3), " curl_multi_setopt "(3), "









|



















>
>
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
man page for the full list with descriptions.

Strings passed on to libcurl must be shorter than 8000000 bytes, otherwise
\fIcurl_easy_setopt(3)\fP returns \fBCURLE_BAD_FUNCTION_ARGUMENT\fP (added in
7.65.0).

\fBCURLE_BAD_FUNCTION_ARGUMENT\fP is returned when the argument to an option
is invalid, like perhaps out of range.

If you try to set an option that libcurl doesn't know about, perhaps because
the library is too old to support it or the option was removed in a recent
version, this function will return \fICURLE_UNKNOWN_OPTION\fP. If support for
the option was disabled at compile-time, it will return
\fICURLE_NOT_BUILT_IN\fP.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  CURLcode res;
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
  res = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
.fi
.SH "SEE ALSO"
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
.BR curl_easy_getinfo "(3), " curl_multi_setopt "(3), "
.BR curl_easy_option_next "(3), " curl_easy_option_by_name "(3), "
.BR curl_easy_option_by_id "(3), "
Changes to jni/curl/docs/libcurl/curl_easy_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
#include <curl/curl.h>

const char *curl_easy_strerror(CURLcode errornum);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
#include <curl/curl.h>

const char *curl_easy_strerror(CURLcode errornum);
Changes to jni/curl/docs/libcurl/curl_easy_unescape.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_unescape( CURL *" curl ", const char *" url







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_unescape( CURL *" curl ", const char *" url
Changes to jni/curl/docs/libcurl/curl_easy_upkeep.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_upkeep 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_easy_upkeep - Perform any connection upkeep checks.
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURLcode curl_easy_upkeep(CURL *" handle ");"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_upkeep 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_easy_upkeep - Perform any connection upkeep checks.
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURLcode curl_easy_upkeep(CURL *" handle ");"
Changes to jni/curl/docs/libcurl/curl_escape.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_escape 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_escape( const char *" url ", int "length " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_escape 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_escape( const char *" url ", int "length " );"
Changes to jni/curl/docs/libcurl/curl_formadd.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem,
Changes to jni/curl/docs/libcurl/curl_formfree.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_formfree(struct curl_httppost *" form);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_formfree(struct curl_httppost *" form);
Changes to jni/curl/docs/libcurl/curl_formget.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formget 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formget 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_free.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_free 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_free( char *" ptr " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_free 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_free( char *" ptr " );"
Changes to jni/curl/docs/libcurl/curl_getdate.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"
Changes to jni/curl/docs/libcurl/curl_getenv.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "December 31, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_getenv(const char *" name ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "December 31, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_getenv(const char *" name ");"
Changes to jni/curl/docs/libcurl/curl_global_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_global_cleanup(void);"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_global_cleanup(void);"
Changes to jni/curl/docs/libcurl/curl_global_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialisation
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_global_init(long " flags ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialisation
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_global_init(long " flags ");"
Changes to jni/curl/docs/libcurl/curl_global_init_mem.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf
.B "CURLcode curl_global_init_mem(long " flags,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf
.B "CURLcode curl_global_init_mem(long " flags,
Changes to jni/curl/docs/libcurl/curl_global_sslset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf

Changes to jni/curl/docs/libcurl/curl_mime_addpart.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mimepart * curl_mime_addpart(curl_mime * " mime ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mimepart * curl_mime_addpart(curl_mime * " mime ");"
Changes to jni/curl/docs/libcurl/curl_mime_data.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_data(curl_mimepart * " part ", const char * " data







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_data(curl_mimepart * " part ", const char * " data
Changes to jni/curl/docs/libcurl/curl_mime_data_cb.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
size_t readfunc(char *buffer, size_t size, size_t nitems, void *arg);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
size_t readfunc(char *buffer, size_t size, size_t nitems, void *arg);
Changes to jni/curl/docs/libcurl/curl_mime_encoder.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_encoder(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_encoder(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_filedata.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filedata(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filedata(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_filename.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filename(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filename(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_free.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_mime_free(curl_mime *" mime);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_mime_free(curl_mime *" mime);
Changes to jni/curl/docs/libcurl/curl_mime_headers.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_headers(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_headers(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mime * curl_mime_init(CURL * " easy_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mime * curl_mime_init(CURL * " easy_handle ");"
Changes to jni/curl/docs/libcurl/curl_mime_name.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_name(curl_mimepart * " part ", const char * " name ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_name(curl_mimepart * " part ", const char * " name ");"
Changes to jni/curl/docs/libcurl/curl_mime_subparts.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_subparts(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_subparts(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_type.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_type(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_type(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mprintf.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_printf 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf,
curl_mvsprintf - formatted output conversion
.SH SYNOPSIS
.B #include <curl/mprintf.h>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_printf 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf,
curl_mvsprintf - formatted output conversion
.SH SYNOPSIS
.B #include <curl/mprintf.h>
Changes to jni/curl/docs/libcurl/curl_multi_add_handle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
Changes to jni/curl/docs/libcurl/curl_multi_assign.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,
Changes to jni/curl/docs/libcurl/curl_multi_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );"
Changes to jni/curl/docs/libcurl/curl_multi_fdset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_info_read.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
#include <curl/curl.h>

CURLMsg *curl_multi_info_read( CURLM *multi_handle,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
#include <curl/curl.h>

CURLMsg *curl_multi_info_read( CURLM *multi_handle,
Changes to jni/curl/docs/libcurl/curl_multi_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLM *curl_multi_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLM *curl_multi_init( );"
Changes to jni/curl/docs/libcurl/curl_multi_perform.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
Changes to jni/curl/docs/libcurl/curl_multi_poll.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_remove_handle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
Changes to jni/curl/docs/libcurl/curl_multi_setopt.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "December 31, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "December 31, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);
Changes to jni/curl/docs/libcurl/curl_multi_socket.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_socket \- reads/writes available data
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_socket \- reads/writes available data
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
Changes to jni/curl/docs/libcurl/curl_multi_socket_action.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_multi_strerror(CURLMcode " errornum ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_multi_strerror(CURLMcode " errornum ");"
Changes to jni/curl/docs/libcurl/curl_multi_timeout.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);
Changes to jni/curl/docs/libcurl/curl_multi_wait.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_wakeup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wakeup 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_wakeup(CURLM *multi_handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wakeup 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_wakeup(CURLM *multi_handle);
Changes to jni/curl/docs/libcurl/curl_share_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSHcode curl_share_cleanup(CURLSH *" share_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSHcode curl_share_cleanup(CURLSH *" share_handle ");"
Changes to jni/curl/docs/libcurl/curl_share_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSH *curl_share_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSH *curl_share_init( );"
Changes to jni/curl/docs/libcurl/curl_share_setopt.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);
Changes to jni/curl/docs/libcurl/curl_share_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_share_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_share_strerror(CURLSHcode " errornum ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_share_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_share_strerror(CURLSHcode " errornum ");"
Changes to jni/curl/docs/libcurl/curl_slist_append.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "struct curl_slist *curl_slist_append(struct curl_slist *" list,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "struct curl_slist *curl_slist_append(struct curl_slist *" list,
Changes to jni/curl/docs/libcurl/curl_slist_free_all.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_slist_free_all(struct curl_slist *" list);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_slist_free_all(struct curl_slist *" list);
Changes to jni/curl/docs/libcurl/curl_strequal.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "int curl_strequal(char *" str1 ", char *" str2 ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "November 05, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "int curl_strequal(char *" str1 ", char *" str2 ");"
Changes to jni/curl/docs/libcurl/curl_unescape.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( const char *" url ", int "length " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( const char *" url ", int "length " );"
Changes to jni/curl/docs/libcurl/curl_url.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url();







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url 3 "March 27, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url();
47
48
49
50
51
52
53
54
    curl_url_cleanup(url);
  }
.fi
.SH AVAILABILITY
Added in curl 7.62.0
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url_get "(3), " curl_url_set "(3), "
.BR curl_url_dup "(3), "







|
47
48
49
50
51
52
53
54
    curl_url_cleanup(url);
  }
.fi
.SH AVAILABILITY
Added in curl 7.62.0
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url_get "(3), " curl_url_set "(3), "
.BR curl_url_dup "(3), " CURLOPT_CURLU "(3), "
Changes to jni/curl/docs/libcurl/curl_url_cleanup.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

void curl_url_cleanup(CURLU *handle);







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "March 27, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

void curl_url_cleanup(CURLU *handle);
38
39
40
41
42
43
44
45
  curl_url_set(url, CURLUPART_URL, "https://example.com", 0);
  curl_url_cleanup(url);
.fi
.SH AVAILABILITY
Added in curl 7.62.0
.SH "SEE ALSO"
.BR curl_url_dup "(3), " curl_url "(3), " curl_url_set "(3), "
.BR curl_url_get "(3), "







|
38
39
40
41
42
43
44
45
  curl_url_set(url, CURLUPART_URL, "https://example.com", 0);
  curl_url_cleanup(url);
.fi
.SH AVAILABILITY
Added in curl 7.62.0
.SH "SEE ALSO"
.BR curl_url_dup "(3), " curl_url "(3), " curl_url_set "(3), "
.BR curl_url_get "(3), " CURLOPT_CURLU "(3), "
Changes to jni/curl/docs/libcurl/curl_url_dup.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url_dup(CURLU *inhandle);







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "March 27, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url_dup(CURLU *inhandle);
46
47
48
49
50
51
52
53
  }
  curl_url_cleanup(url);
.fi
.SH AVAILABILITY
Added in curl 7.62.0
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_set "(3), "
.BR curl_url_get "(3), "







|
46
47
48
49
50
51
52
53
  }
  curl_url_cleanup(url);
.fi
.SH AVAILABILITY
Added in curl 7.62.0
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_set "(3), "
.BR curl_url_get "(3), " CURLOPT_CURLU "(3), "
Changes to jni/curl/docs/libcurl/curl_url_get.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "November 05, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.B #include <curl/curl.h>

.nf







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "March 27, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.B #include <curl/curl.h>

.nf
109
110
111
112
113
114
115
116
    curl_url_cleanup(url);
  }
.fi
.SH AVAILABILITY
Added in curl 7.62.0. CURLUPART_ZONEID was added in 7.65.0.
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_set "(3), "
.BR curl_url_dup "(3), "







|
109
110
111
112
113
114
115
116
    curl_url_cleanup(url);
  }
.fi
.SH AVAILABILITY
Added in curl 7.62.0. CURLUPART_ZONEID was added in 7.65.0.
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_set "(3), "
.BR curl_url_dup "(3), " CURLOPT_CURLU "(3), "
Changes to jni/curl/docs/libcurl/curl_url_set.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLUcode curl_url_set(CURLU *url,







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "February 21, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLUcode curl_url_set(CURLU *url,
114
115
116
117
118
119
120
121




122
123
124
125
126
127
128
that scheme will be used, otherwise it picks HTTP. Conflicts with the
\fICURLU_DEFAULT_SCHEME\fP option which takes precedence if both are set.
.IP CURLU_NO_AUTHORITY
If set, skips authority checks. The RFC allows individual schemes to omit the
host part (normally the only mandatory part of the authority), but libcurl
cannot know whether this is permitted for custom schemes. Specifying the flag
permits empty authority sections, similar to how file scheme is handled.





.SH RETURN VALUE
Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
fine.

A URL string passed on to \fIcurl_url_set(3)\fP for the \fBCURLUPART_URL\fP
part, must be shorter than 8000000 bytes otherwise it returns
\fBCURLUE_MALFORMED_INPUT\fP (added in 7.65.0).







|
>
>
>
>







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
that scheme will be used, otherwise it picks HTTP. Conflicts with the
\fICURLU_DEFAULT_SCHEME\fP option which takes precedence if both are set.
.IP CURLU_NO_AUTHORITY
If set, skips authority checks. The RFC allows individual schemes to omit the
host part (normally the only mandatory part of the authority), but libcurl
cannot know whether this is permitted for custom schemes. Specifying the flag
permits empty authority sections, similar to how file scheme is handled.
.IP CURLU_PATH_AS_IS
When set for \fBCURLUPART_URL\fP, this makes libcurl skip the normalization of
the path. That's the procedure where curl otherwise removes sequences of
dot-slash and dot-dot etc. The same option used for transfers is called
\fICURLOPT_PATH_AS_IS(3)\fP.
.SH RETURN VALUE
Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
fine.

A URL string passed on to \fIcurl_url_set(3)\fP for the \fBCURLUPART_URL\fP
part, must be shorter than 8000000 bytes otherwise it returns
\fBCURLUE_MALFORMED_INPUT\fP (added in 7.65.0).
140
141
142
143
144
145
146
147
  }
  curl_url_cleanup(url);
.fi
.SH AVAILABILITY
Added in curl 7.62.0. CURLUPART_ZONEID was added in 7.65.0.
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_get "(3), "
.BR curl_url_dup "(3), "







|
144
145
146
147
148
149
150
151
  }
  curl_url_cleanup(url);
.fi
.SH AVAILABILITY
Added in curl 7.62.0. CURLUPART_ZONEID was added in 7.65.0.
.SH "SEE ALSO"
.BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_get "(3), "
.BR curl_url_dup "(3), " CURLOPT_CURLU "(3), "
Changes to jni/curl/docs/libcurl/curl_version.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_version 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_version( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_version 3 "November 04, 2020" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_version( );"
Changes to jni/curl/docs/libcurl/curl_version_info.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "November 04, 2020" "libcurl 7.75.0" "libcurl Manual"

.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_version_info_data *curl_version_info( CURLversion "age ");"







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "February 11, 2021" "libcurl 7.76.0" "libcurl Manual"

.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_version_info_data *curl_version_info( CURLversion "age ");"
133
134
135
136
137
138
139



140
141
142
143
144
145
146
libcurl was built with support for character conversions, as provided by the
CURLOPT_CONV_* callbacks. (Added in 7.15.4)
.IP CURL_VERSION_CURLDEBUG
libcurl was built with memory tracking debug capabilities. This is mainly of
interest for libcurl hackers. (added in 7.19.6)
.IP CURL_VERSION_DEBUG
libcurl was built with debug capabilities (added in 7.10.6)



.IP CURL_VERSION_GSSAPI
libcurl was built with support for GSS-API. This makes libcurl use provided
functions for Kerberos and SPNEGO authentication. It also allows libcurl
to use the current user credentials without the app having to pass them on.
(Added in 7.38.0)
.IP CURL_VERSION_GSSNEGOTIATE
supports HTTP GSS-Negotiate (added in 7.10.6)







>
>
>







133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
libcurl was built with support for character conversions, as provided by the
CURLOPT_CONV_* callbacks. (Added in 7.15.4)
.IP CURL_VERSION_CURLDEBUG
libcurl was built with memory tracking debug capabilities. This is mainly of
interest for libcurl hackers. (added in 7.19.6)
.IP CURL_VERSION_DEBUG
libcurl was built with debug capabilities (added in 7.10.6)
.IP CURL_VERSION_GSASL
libcurl was built with libgsasl and thus with some extra SCRAM-SHA
authentication methods. (added in 7.76.0)
.IP CURL_VERSION_GSSAPI
libcurl was built with support for GSS-API. This makes libcurl use provided
functions for Kerberos and SPNEGO authentication. It also allows libcurl
to use the current user credentials without the app having to pass them on.
(Added in 7.38.0)
.IP CURL_VERSION_GSSNEGOTIATE
supports HTTP GSS-Negotiate (added in 7.10.6)
Changes to jni/curl/docs/libcurl/libcurl-easy.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "November 04, 2020" "libcurl 7.75.0" "libcurl easy interface"

.SH NAME
libcurl-easy \- easy interface overview
.SH DESCRIPTION
When using libcurl's "easy" interface you init your session and get a handle
(often referred to as an "easy handle"), which you use as input to the easy
interface functions you use. Use \fIcurl_easy_init(3)\fP to get the handle.







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "November 04, 2020" "libcurl 7.76.0" "libcurl easy interface"

.SH NAME
libcurl-easy \- easy interface overview
.SH DESCRIPTION
When using libcurl's "easy" interface you init your session and get a handle
(often referred to as an "easy handle"), which you use as input to the easy
interface functions you use. Use \fIcurl_easy_init(3)\fP to get the handle.
Changes to jni/curl/docs/libcurl/libcurl-env.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "November 04, 2020" "libcurl 7.75.0" "libcurl environment variables"

.SH NAME
libcurl-env \- environment variables libcurl understands
.SH DESCRIPTION
libcurl reads and understands a set of environment variables that if set will
control and change behaviors. This is the full list of variables to set and
description of what they do. Also note that curl, the command line tool,







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "March 27, 2021" "libcurl 7.76.0" "libcurl environment variables"

.SH NAME
libcurl-env \- environment variables libcurl understands
.SH DESCRIPTION
libcurl reads and understands a set of environment variables that if set will
control and change behaviors. This is the full list of variables to set and
description of what they do. Also note that curl, the command line tool,
42
43
44
45
46
47
48
49

50


51
52
53
54
55
56
57
.IP ALL_PROXY
This is a setting to set proxy for all URLs, independently of what scheme is
being used. Note that the scheme specific variables will override this one if
set.
.IP CURL_SSL_BACKEND
When libcurl is built to support multiple SSL backends, it will select a
specific backend at first use. If no selection is done by the program using
libcurl, this variable's selection will be used. It should be set to the full

SSL backend name to use (case insensitive).


.IP HOME
When the netrc feature is used (\fICURLOPT_NETRC(3)\fP), this variable is
checked as the primary way to find the "current" home directory in which
the .netrc file is likely to exist.
.IP LOGNAME
User name to use when invoking the ntlm-wb tool, if NTLMUSER wasn't set.
.IP NO_PROXY







|
>
|
>
>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
.IP ALL_PROXY
This is a setting to set proxy for all URLs, independently of what scheme is
being used. Note that the scheme specific variables will override this one if
set.
.IP CURL_SSL_BACKEND
When libcurl is built to support multiple SSL backends, it will select a
specific backend at first use. If no selection is done by the program using
libcurl, this variable's selection will be used. Setting a name that isn't a
built-in alternative will make libcurl stay with the default.

SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
.IP HOME
When the netrc feature is used (\fICURLOPT_NETRC(3)\fP), this variable is
checked as the primary way to find the "current" home directory in which
the .netrc file is likely to exist.
.IP LOGNAME
User name to use when invoking the ntlm-wb tool, if NTLMUSER wasn't set.
.IP NO_PROXY
Changes to jni/curl/docs/libcurl/libcurl-errors.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "November 04, 2020" "libcurl 7.75.0" "libcurl errors"

.SH NAME
libcurl-errors \- error codes in libcurl
.SH DESCRIPTION
This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem are also included.
.SH "CURLcode"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "November 04, 2020" "libcurl 7.76.0" "libcurl errors"

.SH NAME
libcurl-errors \- error codes in libcurl
.SH DESCRIPTION
This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem are also included.
.SH "CURLcode"
Changes to jni/curl/docs/libcurl/libcurl-multi.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "November 04, 2020" "libcurl 7.75.0" "libcurl multi interface"

.SH NAME
libcurl-multi \- how to use the multi interface
.SH DESCRIPTION
This is an overview on how to use the libcurl multi interface in your C
programs. There are specific man pages for each function mentioned in
here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "November 04, 2020" "libcurl 7.76.0" "libcurl multi interface"

.SH NAME
libcurl-multi \- how to use the multi interface
.SH DESCRIPTION
This is an overview on how to use the libcurl multi interface in your C
programs. There are specific man pages for each function mentioned in
here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete
Changes to jni/curl/docs/libcurl/libcurl-security.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "November 04, 2020" "libcurl 7.75.0" "libcurl security"

.SH NAME
libcurl-security \- security considerations when using libcurl
.SH "Security"
The libcurl project takes security seriously.  The library is written with
caution and precautions are taken to mitigate many kinds of risks encountered
while operating with potentially malicious servers on the Internet. It is a







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "November 04, 2020" "libcurl 7.76.0" "libcurl security"

.SH NAME
libcurl-security \- security considerations when using libcurl
.SH "Security"
The libcurl project takes security seriously.  The library is written with
caution and precautions are taken to mitigate many kinds of risks encountered
while operating with potentially malicious servers on the Internet. It is a
Changes to jni/curl/docs/libcurl/libcurl-share.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "November 05, 2020" "libcurl 7.75.0" "libcurl share interface"

.SH NAME
libcurl-share \- how to use the share interface
.SH DESCRIPTION
This is an overview on how to use the libcurl share interface in your C
programs. There are specific man pages for each function mentioned in
here.







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "November 05, 2020" "libcurl 7.76.0" "libcurl share interface"

.SH NAME
libcurl-share \- how to use the share interface
.SH DESCRIPTION
This is an overview on how to use the libcurl share interface in your C
programs. There are specific man pages for each function mentioned in
here.
Changes to jni/curl/docs/libcurl/libcurl-symbols.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "Feb  3, 2021" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
This man page details version information for public symbols provided in the
libcurl header files. This lists the first version in which the symbol was
introduced and for some symbols two additional information pieces:








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "Mar 31, 2021" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
This man page details version information for public symbols provided in the
libcurl header files. This lists the first version in which the symbol was
introduced and for some symbols two additional information pieces:

608
609
610
611
612
613
614


615
616
617
618
619
620
621
Introduced in 7.9.7
.IP CURLINFO_REDIRECT_TIME
Introduced in 7.9.7
.IP CURLINFO_REDIRECT_TIME_T
Introduced in 7.61.0
.IP CURLINFO_REDIRECT_URL
Introduced in 7.18.2


.IP CURLINFO_REQUEST_SIZE
Introduced in 7.4.1
.IP CURLINFO_RESPONSE_CODE
Introduced in 7.10.8
.IP CURLINFO_RETRY_AFTER
Introduced in 7.66.0
.IP CURLINFO_RTSP_CLIENT_CSEQ







>
>







608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
Introduced in 7.9.7
.IP CURLINFO_REDIRECT_TIME
Introduced in 7.9.7
.IP CURLINFO_REDIRECT_TIME_T
Introduced in 7.61.0
.IP CURLINFO_REDIRECT_URL
Introduced in 7.18.2
.IP CURLINFO_REFERER
Introduced in 7.76.0
.IP CURLINFO_REQUEST_SIZE
Introduced in 7.4.1
.IP CURLINFO_RESPONSE_CODE
Introduced in 7.10.8
.IP CURLINFO_RETRY_AFTER
Introduced in 7.66.0
.IP CURLINFO_RTSP_CLIENT_CSEQ
891
892
893
894
895
896
897






898
899
900
901
902
903
904
.IP CURLOPT_DNS_SERVERS
Introduced in 7.24.0
.IP CURLOPT_DNS_SHUFFLE_ADDRESSES
Introduced in 7.60.0
.IP CURLOPT_DNS_USE_GLOBAL_CACHE
Introduced in 7.9.3
Deprecated since 7.11.1






.IP CURLOPT_DOH_URL
Introduced in 7.62.0
.IP CURLOPT_EGDSOCKET
Introduced in 7.7
.IP CURLOPT_ENCODING
Introduced in 7.10
.IP CURLOPT_ERRORBUFFER







>
>
>
>
>
>







893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
.IP CURLOPT_DNS_SERVERS
Introduced in 7.24.0
.IP CURLOPT_DNS_SHUFFLE_ADDRESSES
Introduced in 7.60.0
.IP CURLOPT_DNS_USE_GLOBAL_CACHE
Introduced in 7.9.3
Deprecated since 7.11.1
.IP CURLOPT_DOH_SSL_VERIFYHOST
Introduced in 7.76.0
.IP CURLOPT_DOH_SSL_VERIFYPEER
Introduced in 7.76.0
.IP CURLOPT_DOH_SSL_VERIFYSTATUS
Introduced in 7.76.0
.IP CURLOPT_DOH_URL
Introduced in 7.62.0
.IP CURLOPT_EGDSOCKET
Introduced in 7.7
.IP CURLOPT_ENCODING
Introduced in 7.10
.IP CURLOPT_ERRORBUFFER
1710
1711
1712
1713
1714
1715
1716


1717
1718
1719
1720
1721
1722
1723
.IP CURLSSLBACKEND_NSS
Introduced in 7.34.0
.IP CURLSSLBACKEND_OPENSSL
Introduced in 7.34.0
.IP CURLSSLBACKEND_POLARSSL
Introduced in 7.34.0
Deprecated since 7.69.0


.IP CURLSSLBACKEND_QSOSSL
Introduced in 7.34.0
.IP CURLSSLBACKEND_SCHANNEL
Introduced in 7.34.0
.IP CURLSSLBACKEND_SECURETRANSPORT
Introduced in 7.64.1
.IP CURLSSLBACKEND_WOLFSSL







>
>







1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
.IP CURLSSLBACKEND_NSS
Introduced in 7.34.0
.IP CURLSSLBACKEND_OPENSSL
Introduced in 7.34.0
.IP CURLSSLBACKEND_POLARSSL
Introduced in 7.34.0
Deprecated since 7.69.0
.IP CURLSSLBACKEND_RUSTLS
Introduced in 7.76.0
.IP CURLSSLBACKEND_QSOSSL
Introduced in 7.34.0
.IP CURLSSLBACKEND_SCHANNEL
Introduced in 7.34.0
.IP CURLSSLBACKEND_SECURETRANSPORT
Introduced in 7.64.1
.IP CURLSSLBACKEND_WOLFSSL
2134
2135
2136
2137
2138
2139
2140


2141
2142
2143
2144
2145
2146
2147
Introduced in 7.57.0
.IP CURL_VERSION_CONV
Introduced in 7.15.4
.IP CURL_VERSION_CURLDEBUG
Introduced in 7.19.6
.IP CURL_VERSION_DEBUG
Introduced in 7.10.6


.IP CURL_VERSION_GSSAPI
Introduced in 7.38.0
.IP CURL_VERSION_GSSNEGOTIATE
Introduced in 7.10.6
Deprecated since 7.38.0
.IP CURL_VERSION_HSTS
Introduced in 7.74.0







>
>







2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
Introduced in 7.57.0
.IP CURL_VERSION_CONV
Introduced in 7.15.4
.IP CURL_VERSION_CURLDEBUG
Introduced in 7.19.6
.IP CURL_VERSION_DEBUG
Introduced in 7.10.6
.IP CURL_VERSION_GSASL
Introduced in 7.76.0
.IP CURL_VERSION_GSSAPI
Introduced in 7.38.0
.IP CURL_VERSION_GSSNEGOTIATE
Introduced in 7.10.6
Deprecated since 7.38.0
.IP CURL_VERSION_HSTS
Introduced in 7.74.0
Changes to jni/curl/docs/libcurl/libcurl-thread.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "November 04, 2020" "libcurl 7.75.0" "libcurl thread safety"

.SH NAME
libcurl-thread \- libcurl thread safety
.SH "Multi-threading with libcurl"
libcurl is thread safe but has no internal thread synchronization. You may have
to provide your own locking should you meet any of the thread safety exceptions
below.







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "November 04, 2020" "libcurl 7.76.0" "libcurl thread safety"

.SH NAME
libcurl-thread \- libcurl thread safety
.SH "Multi-threading with libcurl"
libcurl is thread safe but has no internal thread synchronization. You may have
to provide your own locking should you meet any of the thread safety exceptions
below.
Changes to jni/curl/docs/libcurl/libcurl-tutorial.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "November 05, 2020" "libcurl 7.75.0" "libcurl programming"

.SH NAME
libcurl-tutorial \- libcurl programming tutorial
.SH "Objective"
This document attempts to describe the general principles and some basic
approaches to consider when programming with libcurl. The text will focus
mainly on the C interface but might apply fairly well on other interfaces as







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "November 05, 2020" "libcurl 7.76.0" "libcurl programming"

.SH NAME
libcurl-tutorial \- libcurl programming tutorial
.SH "Objective"
This document attempts to describe the general principles and some basic
approaches to consider when programming with libcurl. The text will focus
mainly on the C interface but might apply fairly well on other interfaces as
Changes to jni/curl/docs/libcurl/libcurl-url.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "November 05, 2020" "libcurl 7.75.0" "libcurl url interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides a set of functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code. Note that the URL API was







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "November 05, 2020" "libcurl 7.76.0" "libcurl url interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides a set of functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code. Note that the URL API was
Changes to jni/curl/docs/libcurl/libcurl.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "November 04, 2020" "libcurl 7.75.0" "libcurl overview"

.SH NAME
libcurl \- client-side URL transfers
.SH DESCRIPTION
This is a short overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There are also the
\fIlibcurl-easy(3)\fP man page, the \fIlibcurl-multi(3)\fP man page, the







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "November 04, 2020" "libcurl 7.76.0" "libcurl overview"

.SH NAME
libcurl \- client-side URL transfers
.SH DESCRIPTION
This is a short overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There are also the
\fIlibcurl-easy(3)\fP man page, the \fIlibcurl-multi(3)\fP man page, the
jni/curl/docs/libcurl/mksymbolsmanpage.pl became executable.
Changes to jni/curl/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CERTINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_METHOD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_METHOD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "January 14, 2021" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "January 14, 2021" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_ERROR 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_ERROR 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT, long *result);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT, long *result);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);
Added jni/curl/docs/libcurl/opts/CURLINFO_REFERER.3.




























































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REFERER 3 "February 19, 2021" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REFERER \- get the referrer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REFERER, char **hdrp);
.SH DESCRIPTION
Pass in a pointer to a char pointer and get the referrer header.

The \fBhdrp\fP pointer will be NULL or pointing to private memory you MUST NOT
free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
corresponding CURL handle.
.SH PROTOCOLS
HTTP(S)
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  CURLcode res;
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
  curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.org/referrer");
  res = curl_easy_perform(curl);
  if(res == CURLE_OK) {
    char *hdr = NULL;
    curl_easy_getinfo(curl, CURLINFO_REFERER, &hdr);
    if(hdr)
      printf("Referrer header: %s\\n", hdr);
  }
  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Added in 7.76.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
.BR CURLOPT_REFERER "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t *retry);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t *retry);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SCHEME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T, curl_off_t *dlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T, curl_off_t *dlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T, curl_off_t *uploadp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T, curl_off_t *uploadp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T, curl_off_t *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T, curl_off_t *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T, curl_off_t *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T, curl_off_t *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_CONCURRENT_STREAMS \- set max concurrent streams for http2
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_CONCURRENT_STREAMS \- set max concurrent streams for http2
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "March 17, 2021" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);
41
42
43
44
45
46
47









48
49
50
51
52
53
54
The default \fBmax\fP value is 0, unlimited.  However, for backwards
compatibility, setting it to 0 when \fICURLMOPT_PIPELINING(3)\fP is 1 will not
be treated as unlimited. Instead it will open only 1 connection and try to
pipeline on it.

This set limit is also used for proxy connections, and then the proxy is
considered to be the host for which this limit counts.









.SH DEFAULT
0
.SH PROTOCOLS
HTTP(S)
.SH EXAMPLE
.nf
CURLM *m = curl_multi_init();







>
>
>
>
>
>
>
>
>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
The default \fBmax\fP value is 0, unlimited.  However, for backwards
compatibility, setting it to 0 when \fICURLMOPT_PIPELINING(3)\fP is 1 will not
be treated as unlimited. Instead it will open only 1 connection and try to
pipeline on it.

This set limit is also used for proxy connections, and then the proxy is
considered to be the host for which this limit counts.

When more transfers are added to the multi handle than what can be performed
due to the set limit, they will be queued up waiting for their chance. When
that happens, the \fICURLOPT_TIMEOUT_MS(3)\fP timeout will be counted
inclusive of the waiting time, meaning that if you set a too narrow timeout in
such a case the transfer might never even start before it times out.

Even in the queued up situation, the \fICURLOPT_CONNECTTIMEOUT_MS(3)\fP
timeout is however treated as a per-connect timeout.
.SH DEFAULT
0
.SH PROTOCOLS
HTTP(S)
.SH EXAMPLE
.nf
CURLM *m = curl_multi_init();
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38









39
40
41
42
43
44
45
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount);
.SH DESCRIPTION
Pass a long for the \fBamount\fP. The set number will be used as the maximum
number of simultaneously open connections in total using this multi
handle. For each new session, libcurl will open a new connection up to the
limit set by \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP. When the limit is
reached, the sessions will be pending until there are available
connections. If \fICURLMOPT_PIPELINING(3)\fP is enabled, libcurl will try to
pipeline or use multiplexing if the host is capable of it.









.SH DEFAULT
The default value is 0, which means that there is no limit. It is then simply
controlled by the number of easy handles added.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf







|














|














|
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "March 17, 2021" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount);
.SH DESCRIPTION
Pass a long for the \fBamount\fP. The set number will be used as the maximum
number of simultaneously open connections in total using this multi
handle. For each new session, libcurl will open a new connection up to the
limit set by \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP. When the limit is
reached, the sessions will be pending until there are available
connections. If \fICURLMOPT_PIPELINING(3)\fP is enabled, libcurl will try to
use multiplexing if the host is capable of it.

When more transfers are added to the multi handle than what can be performed
due to the set limit, they will be queued up waiting for their chance. When
that happens, the \fICURLOPT_TIMEOUT_MS(3)\fP timeout will be counted
inclusive of the waiting time, meaning that if you set a too narrow timeout in
such a case the transfer might never even start before it times out.

Even in the queued up situation, the \fICURLOPT_CONNECTTIMEOUT_MS(3)\fP
timeout is however treated as a per-connect timeout.
.SH DEFAULT
The default value is 0, which means that there is no limit. It is then simply
controlled by the number of easy handles added.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- set alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- set alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_APPEND.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
.SH DESCRIPTION
Pass a parameter set to 1 to enable this. When enabled, libcurl will
automatically set the Referer: header field in HTTP requests where it follows
a Location: redirect.
.SH DEFAULT
0, disabled
.SH PROTOCOLS
HTTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();







|














|









|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "March 30, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
.SH DESCRIPTION
Pass a parameter set to 1 to enable this. When enabled, libcurl will
automatically set the Referer: header field in HTTP requests to the full URL
where it follows a Location: redirect.
.SH DEFAULT
0, disabled
.SH PROTOCOLS
HTTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
Changes to jni/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AWS_SIGV4 3 "January 25, 2021" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AWS_SIGV4 \- V4 signature
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AWS_SIGV4 3 "January 25, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AWS_SIGV4 \- V4 signature
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAPATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
.SH SYNOPSIS
#include <curl/curl.h>

int closesocket_callback(void *clientp, curl_socket_t item);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
.SH SYNOPSIS
#include <curl/curl.h>

int closesocket_callback(void *clientp, curl_socket_t item);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLF.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CURLU.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "February 21, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);
64
65
66
67
68
69
70

.SH AVAILABILITY
Added in 7.63.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_URL "(3), "
.BR curl_url "(3), " curl_url_get "(3), " curl_url_set "(3), "








>
64
65
66
67
68
69
70
71
.SH AVAILABILITY
Added in 7.63.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_URL "(3), "
.BR curl_url "(3), " curl_url_get "(3), " curl_url_set "(3), "
.BR curl_url_dup "(3), " curl_url_cleanup "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "December 31, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "December 31, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DISALLOW_USERNAME_IN_URL, long disallow);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DISALLOW_USERNAME_IN_URL, long disallow);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,
Added jni/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3.












































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "February 11, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYHOST \- verify the host name in the DOH SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_SSL_VERIFYHOST, long verify);
.SH DESCRIPTION
Pass a long set to 2L as asking curl to \fIverify\fP the DOH (DNS-over-HTTPS)
server's certificate name fields against the host name.

This option is the DOH equivalent of \fICURLOPT_SSL_VERIFYHOST(3)\fP and
only affects requests to the DOH server.

When \fICURLOPT_DOH_SSL_VERIFYHOST(3)\fP is 2, the SSL certificate provided by
the DOH server must indicate that the server name is the same as the server
name to which you meant to connect to, or the connection fails.

Curl considers the DOH server the intended one when the Common Name field or a
Subject Alternate Name field in the certificate matches the host name in the
DOH URL to which you told Curl to connect.

When the \fIverify\fP value is set to 1L it is treated the same as 2L. However
for consistency with the other VERIFYHOST options we suggest use 2 and not 1.

When the \fIverify\fP value is set to 0L, the connection succeeds regardless of
the names used in the certificate. Use that ability with caution!

See also \fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP to verify the digital signature
of the DOH server certificate.  If libcurl is built against NSS and
\fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP is zero,
\fICURLOPT_DOH_SSL_VERIFYHOST(3)\fP is also set to zero and cannot be
overridden.
.SH DEFAULT
2
.SH PROTOCOLS
DOH
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");

  curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://cloudflare-dns.com/dns-query");

  /* Disable host name verification of the DOH server */
  curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYHOST, 0L);

  curl_easy_perform(curl);
}
.fi
.SH AVAILABILITY
Added in 7.76.0

If built TLS enabled.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_DOH_SSL_VERIFYPEER "(3), "
.BR CURLOPT_SSL_VERIFYHOST "(3), "
.BR CURLOPT_SSL_VERIFYPEER "(3), "
.BR CURLOPT_PROXY_SSL_VERIFYPEER "(3), "
.BR CURLOPT_PROXY_SSL_VERIFYHOST "(3), "
Added jni/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3.


































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "February 11, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYPEER \- verify the DOH SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_SSL_VERIFYPEER, long verify);
.SH DESCRIPTION
Pass a long as parameter set to 1L to enable or 0L to disable.

This option tells curl to verify the authenticity of the DOH (DNS-over-HTTPS)
server's certificate. A value of 1 means curl verifies; 0 (zero) means it
doesn't.

This option is the DOH equivalent of \fICURLOPT_SSL_VERIFYPEER(3)\fP and
only affects requests to the DOH server.

When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. Curl verifies whether the certificate is authentic,
i.e. that you can trust that the server is who the certificate says it is.
This trust is based on a chain of digital signatures, rooted in certification
authority (CA) certificates you supply.  curl uses a default bundle of CA
certificates (the path for that is determined at build time) and you can
specify alternate certificates with the \fICURLOPT_CAINFO(3)\fP option
or the \fICURLOPT_CAPATH(3)\fP option.

When \fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP is enabled, and the verification
fails to prove that the certificate is authentic, the connection fails.  When
the option is zero, the peer certificate verification succeeds regardless.

Authenticating the certificate is not enough to be sure about the server. You
typically also want to ensure that the server is the server you mean to be
talking to.  Use \fICURLOPT_DOH_SSL_VERIFYHOST(3)\fP for that. The check
that the host name in the certificate is valid for the host name you're
connecting to is done independently of the
\fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP option.

WARNING: disabling verification of the certificate allows bad guys to
man-in-the-middle the communication without you knowing it. Disabling
verification makes the communication insecure. Just having encryption on a
transfer is not enough as you cannot be sure that you are communicating with
the correct end-point.
.SH DEFAULT
1
.SH PROTOCOLS
DOH
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");

  curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://cloudflare-dns.com/dns-query");

  /* Disable certificate verification of the DOH server */
  curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYPEER, 0L);

  curl_easy_perform(curl);
}
.fi
.SH AVAILABILITY
Added in 7.76.0

If built TLS enabled.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_DOH_SSL_VERIFYHOST "(3), "
.BR CURLOPT_SSL_VERIFYHOST "(3), "
.BR CURLOPT_SSL_VERIFYPEER "(3), "
.BR CURLOPT_PROXY_SSL_VERIFYPEER "(3), "
.BR CURLOPT_PROXY_SSL_VERIFYHOST "(3), "
.BR CURLOPT_CAINFO "(3), "
.BR CURLOPT_CAPATH "(3), "
Added jni/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3.












































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "February 11, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYSTATUS \- verify the DOH SSL certificate's status
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_SSL_VERIFYSTATUS, long verify);
.SH DESCRIPTION
Pass a long as parameter set to 1 to enable or 0 to disable.

This option determines whether libcurl verifies the status of the DOH
(DNS-over-HTTPS) server cert using the "Certificate Status Request" TLS
extension (aka. OCSP stapling).

This option is the DOH equivalent of \fICURLOPT_SSL_VERIFYSTATUS(3)\fP and
only affects requests to the DOH server.

Note that if this option is enabled but the server does not support the TLS
extension, the verification will fail.
.SH DEFAULT
0
.SH PROTOCOLS
DOH
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");

  curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://cloudflare-dns.com/dns-query");

  /* Ask for OCSP stapling when verifying the DOH server */
  curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYSTATUS, 1L);

  curl_easy_perform(curl);
}
.fi
.SH AVAILABILITY
Added in 7.76.0. This option is currently only supported by the OpenSSL, GnuTLS
and NSS TLS backends.
.SH RETURN VALUE
Returns CURLE_OK if OCSP stapling is supported by the SSL backend, otherwise
returns CURLE_NOT_BUILT_IN.
.SH "SEE ALSO"
.BR CURLOPT_DOH_SSL_VERIFYHOST "(3), "
.BR CURLOPT_DOH_SSL_VERIFYPEER "(3), "
.BR CURLOPT_SSL_VERIFYSTATUS "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "March 04, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);
41
42
43
44
45
46
47






48
49
50
51
52
53
54
curl sends POST requests to the given DNS-over-HTTPS URL.

To find the DOH server itself, which might be specified using a name, libcurl
will use the default name lookup function. You can bootstrap that by providing
the address for the DOH server with \fICURLOPT_RESOLVE(3)\fP.

Disable DOH use again by setting this option to NULL.






.SH DEFAULT
NULL - there is no default DOH URL. If this option isn't set, libcurl will use
the default name resolver.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf







>
>
>
>
>
>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
curl sends POST requests to the given DNS-over-HTTPS URL.

To find the DOH server itself, which might be specified using a name, libcurl
will use the default name lookup function. You can bootstrap that by providing
the address for the DOH server with \fICURLOPT_RESOLVE(3)\fP.

Disable DOH use again by setting this option to NULL.

\fBAdvanced:\fP The DOH lookups use SSL so some SSL settings from your transfer
are inherited. The hostname and peer certificate verification settings are not
inherited and can be controlled separately via
\fICURLOPT_DOH_SSL_VERIFYHOST(3)\fP and \fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP.
Note \fICURLOPT_SSL_CTX_FUNCTION(3)\fP is inherited.
.SH DEFAULT
NULL - there is no default DOH URL. If this option isn't set, libcurl will use
the default name resolver.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FILETIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "November 24, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "November 24, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
#include <curl/curl.h>

size_t header_callback(char *buffer,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
#include <curl/curl.h>

size_t header_callback(char *buffer,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS 3 "November 13, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTS \- set HSTS cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS 3 "November 13, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTS \- set HSTS cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSREADDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSREADDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *sts, void *userp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *sts, void *userp);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSWRITEDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSWRITEDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLSTScode hstswrite(CURL *easy, struct curl_hstsentry *sts,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLSTScode hstswrite(CURL *easy, struct curl_hstsentry *sts,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS_CTRL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTS_CTRL \- control HSTS behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS_CTRL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTS_CTRL \- control HSTS behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "July 03, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "July 03, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT_BLOB 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT_BLOB, struct curl_blob *stblob);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT_BLOB 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT_BLOB, struct curl_blob *stblob);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEEP_SENDING_ON_ERROR,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEEP_SENDING_ON_ERROR,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT_ALLLOWFAILS \- allow RCPT TO command to fail for some recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT_ALLLOWFAILS \- allow RCPT TO command to fail for some recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "December 31, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "December 31, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- request that .netrc is used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- request that .netrc is used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOBODY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- set remote port number to work with
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- set remote port number to work with
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- request an HTTP POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- request an HTTP POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "December 31, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "December 31, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "December 31, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "December 31, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRE_PROXY, char *preproxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRE_PROXY, char *preproxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- set proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- set proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_ISSUERCERT, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_ISSUERCERT, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT_BLOB \- proxy issuer SSL certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT_BLOB \- proxy issuer SSL certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_PINNEDPUBLICKEY, char *pinnedpubkey);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_PINNEDPUBLICKEY, char *pinnedpubkey);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT_BLOB, struct curl_blob *blob);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT_BLOB, struct curl_blob *blob);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY, char *keyfile);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY, char *keyfile);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY_BLOB \- private key for proxy cert from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY_BLOB \- private key for proxy cert from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLVERSION, long version);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLVERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_CIPHER_LIST, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_CIPHER_LIST, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYPEER, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYPEER, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLS13_CIPHERS, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLS13_CIPHERS, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_TYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_TYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_USERNAME, char *user);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_USERNAME, char *user);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_QUOTE.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

38

39
40

41
42
43




44
45
46
47
48
49
50
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds);
.SH DESCRIPTION
Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
prior to your request. This will be done before any other commands are issued
(even before the CWD command for FTP). The linked list should be a fully valid
list of 'struct curl_slist' structs properly filled in with text strings. Use
\fIcurl_slist_append(3)\fP to append strings (commands) to the list, and clear
the entire list afterwards with \fIcurl_slist_free_all(3)\fP. Disable this

operation again by setting a NULL to this option. When speaking to an FTP

server, prefix the command with an asterisk (*) to make libcurl continue even
if the command fails as by default libcurl will stop at first failure.


The set of valid FTP commands depends on the server (see RFC959 for a list of
mandatory commands).





The valid SFTP commands are:
.RS
.IP "atime date file"
The atime command sets the last access time of the file named by the file
operand. The <date expression> can be all sorts of date strings, see the
\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)







|














|













|
>
|
>
|
|
>



>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "February 08, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds);
.SH DESCRIPTION
Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
prior to your request. This will be done before any other commands are issued
(even before the CWD command for FTP). The linked list should be a fully valid
list of 'struct curl_slist' structs properly filled in with text strings. Use
\fIcurl_slist_append(3)\fP to append strings (commands) to the list, and clear
the entire list afterwards with \fIcurl_slist_free_all(3)\fP.

Disable this operation again by setting a NULL to this option.

When speaking to an FTP server, prefix the command with an asterisk (*) to
make libcurl continue even if the command fails as by default libcurl will
stop at first failure.

The set of valid FTP commands depends on the server (see RFC959 for a list of
mandatory commands).

libcurl does not inspect, parse or "understand" the commands passed to the
server using this option. If you change connection state, working directory or
similar using quote commands, libcurl will not know about it.

The valid SFTP commands are:
.RS
.IP "atime date file"
The atime command sets the last access time of the file named by the file
operand. The <date expression> can be all sorts of date strings, see the
\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- set byte range to request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- set byte range to request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "December 30, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
#include <curl/curl.h>

size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "December 30, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
#include <curl/curl.h>

size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REFERER.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "February 19, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where);
55
56
57
58
59
60
61

.SH AVAILABILITY
If built with HTTP support
.SH RETURN VALUE
Returns CURLE_OK if HTTP support is enabled, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_USERAGENT "(3), " CURLOPT_HTTPHEADER "(3), "








>
55
56
57
58
59
60
61
62
.SH AVAILABILITY
If built with HTTP support
.SH RETURN VALUE
Returns CURLE_OK if HTTP support is enabled, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_USERAGENT "(3), " CURLOPT_HTTPHEADER "(3), "
.BR CURLINFO_REFERER "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "December 10, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "February 25, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
ADDRESS entries can of course be either IPv4 or IPv6 style addressing.

This option effectively pre-populates the DNS cache with entries for the
host+port pair so redirects and everything that operations against the
HOST+PORT will instead use your provided ADDRESS.

The optional leading "+" signifies whether the new entry should time-out or
not. Entires added with "HOST:..." will never time-out whereas entries added
with "+HOST:..." will time-out just like ordinary DNS cache entries.

If the DNS cache already has an entry for the given host+port pair, then
this entry will be removed and a new entry will be created. This is because
the old entry may have have different addresses or a different time-out
setting.








|







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
ADDRESS entries can of course be either IPv4 or IPv6 style addressing.

This option effectively pre-populates the DNS cache with entries for the
host+port pair so redirects and everything that operations against the
HOST+PORT will instead use your provided ADDRESS.

The optional leading "+" signifies whether the new entry should time-out or
not. Entries added with "HOST:..." will never time-out whereas entries added
with "+HOST:..." will time-out just like ordinary DNS cache entries.

If the DNS cache already has an entry for the given host+port pair, then
this entry will be removed and a new entry will be created. This is because
the old entry may have have different addresses or a different time-out
setting.

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_AUTHZID 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_AUTHZID \- authorisation identity (identity to act as)
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_AUTHZID, char *authzid);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_AUTHZID 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_AUTHZID \- authorisation identity (identity to act as)
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_AUTHZID, char *authzid);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SHARE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- specify share handle to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- specify share handle to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_COMPRESSION, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_COMPRESSION, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT_BLOB 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT_BLOB, struct curl_blob *stblob);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT_BLOB 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT_BLOB, struct curl_blob *stblob);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY_BLOB 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY_BLOB \- private key for client cert from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY_BLOB 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY_BLOB \- private key for client cert from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "March 04, 2021" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>

59
60
61
62
63
64
65








66
67
68
69
70
71
72
change the actual URI of an HTTPS request.

WARNING: The \fICURLOPT_SSL_CTX_FUNCTION(3)\fP callback allows the application
to reach in and modify SSL details in the connection without libcurl itself
knowing anything about it, which then subsequently can lead to libcurl
unknowingly reusing SSL connections with different properties. To remedy this
you may set \fICURLOPT_FORBID_REUSE(3)\fP from the callback function.








.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
See cacertinmem.c in docs/examples directory for usage example.








>
>
>
>
>
>
>
>







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
change the actual URI of an HTTPS request.

WARNING: The \fICURLOPT_SSL_CTX_FUNCTION(3)\fP callback allows the application
to reach in and modify SSL details in the connection without libcurl itself
knowing anything about it, which then subsequently can lead to libcurl
unknowingly reusing SSL connections with different properties. To remedy this
you may set \fICURLOPT_FORBID_REUSE(3)\fP from the callback function.

WARNING: If you are using DNS-over-HTTPS (DOH) via \fICURLOPT_DOH_URL(3)\fP
then the CTX callback will also be called for those transfers and the curl
handle is set to an internal handle. \fBThis behavior is subject to change.\fP
We recommend before performing your transfer set \fICURLOPT_PRIVATE(3)\fP on
your curl handle so you can identify it in the CTX callback. If you have a
reason to modify DOH SSL context please let us know on the curl-library mailing
list because we are considering removing this capability.
.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
See cacertinmem.c in docs/examples directory for usage example.

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_EC_CURVES 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_EC_CURVES \- set key exchange curves
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_EC_CURVES, char *alg_list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_EC_CURVES 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_EC_CURVES \- set key exchange curves
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_EC_CURVES, char *alg_list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STDERR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
.SH SYNOPSIS
#include <curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERDATA, void *userdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
.SH SYNOPSIS
#include <curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERDATA, void *userdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
.SH SYNOPSIS
#include <curl.h>

int curl_trailer_callback(struct curl_slist ** list, void *userdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
.SH SYNOPSIS
#include <curl.h>

int curl_trailer_callback(struct curl_slist ** list, void *userdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPKEEP_INTERVAL_MS, long upkeep_interval_ms);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPKEEP_INTERVAL_MS, long upkeep_interval_ms);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- enable data upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- enable data upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_BUFFERSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_BUFFERSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "December 12, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- provide the URL to use in the request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "December 12, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- provide the URL to use in the request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERPWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "November 04, 2020" "libcurl 7.75.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "November 04, 2020" "libcurl 7.76.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);
Changes to jni/curl/docs/libcurl/opts/Makefile.in.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360

361
362
363



364
365
366
367
368
369
370
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







339
340
341
342
343
344
345

346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
463
464
465
466
467
468
469

470
471
472
473
474
475
476
  CURLINFO_PROXY_ERROR.3                        \
  CURLINFO_PROXY_SSL_VERIFYRESULT.3             \
  CURLINFO_PROXYAUTH_AVAIL.3                    \
  CURLINFO_REDIRECT_COUNT.3                     \
  CURLINFO_REDIRECT_TIME.3                      \
  CURLINFO_REDIRECT_TIME_T.3                    \
  CURLINFO_REDIRECT_URL.3                       \

  CURLINFO_REQUEST_SIZE.3                       \
  CURLINFO_RESPONSE_CODE.3                      \
  CURLINFO_RETRY_AFTER.3                        \
  CURLINFO_RTSP_CLIENT_CSEQ.3                   \
  CURLINFO_RTSP_CSEQ_RECV.3                     \
  CURLINFO_RTSP_SERVER_CSEQ.3                   \
  CURLINFO_RTSP_SESSION_ID.3                    \







>







466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
  CURLINFO_PROXY_ERROR.3                        \
  CURLINFO_PROXY_SSL_VERIFYRESULT.3             \
  CURLINFO_PROXYAUTH_AVAIL.3                    \
  CURLINFO_REDIRECT_COUNT.3                     \
  CURLINFO_REDIRECT_TIME.3                      \
  CURLINFO_REDIRECT_TIME_T.3                    \
  CURLINFO_REDIRECT_URL.3                       \
  CURLINFO_REFERER.3                            \
  CURLINFO_REQUEST_SIZE.3                       \
  CURLINFO_RESPONSE_CODE.3                      \
  CURLINFO_RETRY_AFTER.3                        \
  CURLINFO_RTSP_CLIENT_CSEQ.3                   \
  CURLINFO_RTSP_CSEQ_RECV.3                     \
  CURLINFO_RTSP_SERVER_CSEQ.3                   \
  CURLINFO_RTSP_SESSION_ID.3                    \
549
550
551
552
553
554
555



556
557
558
559
560
561
562
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \
  CURLOPT_DNS_LOCAL_IP4.3                       \
  CURLOPT_DNS_LOCAL_IP6.3                       \
  CURLOPT_DNS_SERVERS.3                         \
  CURLOPT_DNS_SHUFFLE_ADDRESSES.3               \
  CURLOPT_DNS_USE_GLOBAL_CACHE.3                \



  CURLOPT_DOH_URL.3                             \
  CURLOPT_EGDSOCKET.3                           \
  CURLOPT_ERRORBUFFER.3                         \
  CURLOPT_EXPECT_100_TIMEOUT_MS.3               \
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \







>
>
>







553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \
  CURLOPT_DNS_LOCAL_IP4.3                       \
  CURLOPT_DNS_LOCAL_IP6.3                       \
  CURLOPT_DNS_SERVERS.3                         \
  CURLOPT_DNS_SHUFFLE_ADDRESSES.3               \
  CURLOPT_DNS_USE_GLOBAL_CACHE.3                \
  CURLOPT_DOH_SSL_VERIFYHOST.3                  \
  CURLOPT_DOH_SSL_VERIFYPEER.3                  \
  CURLOPT_DOH_SSL_VERIFYSTATUS.3                \
  CURLOPT_DOH_URL.3                             \
  CURLOPT_EGDSOCKET.3                           \
  CURLOPT_ERRORBUFFER.3                         \
  CURLOPT_EXPECT_100_TIMEOUT_MS.3               \
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \
Changes to jni/curl/docs/libcurl/opts/Makefile.inc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
60
61
62
63
64
65
66

67
68
69
70
71
72
73
  CURLINFO_PROXY_ERROR.3                        \
  CURLINFO_PROXY_SSL_VERIFYRESULT.3             \
  CURLINFO_PROXYAUTH_AVAIL.3                    \
  CURLINFO_REDIRECT_COUNT.3                     \
  CURLINFO_REDIRECT_TIME.3                      \
  CURLINFO_REDIRECT_TIME_T.3                    \
  CURLINFO_REDIRECT_URL.3                       \

  CURLINFO_REQUEST_SIZE.3                       \
  CURLINFO_RESPONSE_CODE.3                      \
  CURLINFO_RETRY_AFTER.3                        \
  CURLINFO_RTSP_CLIENT_CSEQ.3                   \
  CURLINFO_RTSP_CSEQ_RECV.3                     \
  CURLINFO_RTSP_SERVER_CSEQ.3                   \
  CURLINFO_RTSP_SESSION_ID.3                    \







>







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  CURLINFO_PROXY_ERROR.3                        \
  CURLINFO_PROXY_SSL_VERIFYRESULT.3             \
  CURLINFO_PROXYAUTH_AVAIL.3                    \
  CURLINFO_REDIRECT_COUNT.3                     \
  CURLINFO_REDIRECT_TIME.3                      \
  CURLINFO_REDIRECT_TIME_T.3                    \
  CURLINFO_REDIRECT_URL.3                       \
  CURLINFO_REFERER.3                            \
  CURLINFO_REQUEST_SIZE.3                       \
  CURLINFO_RESPONSE_CODE.3                      \
  CURLINFO_RETRY_AFTER.3                        \
  CURLINFO_RTSP_CLIENT_CSEQ.3                   \
  CURLINFO_RTSP_CSEQ_RECV.3                     \
  CURLINFO_RTSP_SERVER_CSEQ.3                   \
  CURLINFO_RTSP_SESSION_ID.3                    \
146
147
148
149
150
151
152



153
154
155
156
157
158
159
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \
  CURLOPT_DNS_LOCAL_IP4.3                       \
  CURLOPT_DNS_LOCAL_IP6.3                       \
  CURLOPT_DNS_SERVERS.3                         \
  CURLOPT_DNS_SHUFFLE_ADDRESSES.3               \
  CURLOPT_DNS_USE_GLOBAL_CACHE.3                \



  CURLOPT_DOH_URL.3                             \
  CURLOPT_EGDSOCKET.3                           \
  CURLOPT_ERRORBUFFER.3                         \
  CURLOPT_EXPECT_100_TIMEOUT_MS.3               \
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \







>
>
>







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \
  CURLOPT_DNS_LOCAL_IP4.3                       \
  CURLOPT_DNS_LOCAL_IP6.3                       \
  CURLOPT_DNS_SERVERS.3                         \
  CURLOPT_DNS_SHUFFLE_ADDRESSES.3               \
  CURLOPT_DNS_USE_GLOBAL_CACHE.3                \
  CURLOPT_DOH_SSL_VERIFYHOST.3                  \
  CURLOPT_DOH_SSL_VERIFYPEER.3                  \
  CURLOPT_DOH_SSL_VERIFYSTATUS.3                \
  CURLOPT_DOH_URL.3                             \
  CURLOPT_EGDSOCKET.3                           \
  CURLOPT_ERRORBUFFER.3                         \
  CURLOPT_EXPECT_100_TIMEOUT_MS.3               \
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \
Changes to jni/curl/docs/libcurl/symbols-in-versions.
267
268
269
270
271
272
273

274
275
276
277
278
279
280
CURLINFO_PROXY_ERROR            7.73.0
CURLINFO_PROXY_SSL_VERIFYRESULT 7.52.0
CURLINFO_PTR                    7.54.1
CURLINFO_REDIRECT_COUNT         7.9.7
CURLINFO_REDIRECT_TIME          7.9.7
CURLINFO_REDIRECT_TIME_T        7.61.0
CURLINFO_REDIRECT_URL           7.18.2

CURLINFO_REQUEST_SIZE           7.4.1
CURLINFO_RESPONSE_CODE          7.10.8
CURLINFO_RETRY_AFTER            7.66.0
CURLINFO_RTSP_CLIENT_CSEQ       7.20.0
CURLINFO_RTSP_CSEQ_RECV         7.20.0
CURLINFO_RTSP_SERVER_CSEQ       7.20.0
CURLINFO_RTSP_SESSION_ID        7.20.0







>







267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
CURLINFO_PROXY_ERROR            7.73.0
CURLINFO_PROXY_SSL_VERIFYRESULT 7.52.0
CURLINFO_PTR                    7.54.1
CURLINFO_REDIRECT_COUNT         7.9.7
CURLINFO_REDIRECT_TIME          7.9.7
CURLINFO_REDIRECT_TIME_T        7.61.0
CURLINFO_REDIRECT_URL           7.18.2
CURLINFO_REFERER                7.76.0
CURLINFO_REQUEST_SIZE           7.4.1
CURLINFO_RESPONSE_CODE          7.10.8
CURLINFO_RETRY_AFTER            7.66.0
CURLINFO_RTSP_CLIENT_CSEQ       7.20.0
CURLINFO_RTSP_CSEQ_RECV         7.20.0
CURLINFO_RTSP_SERVER_CSEQ       7.20.0
CURLINFO_RTSP_SESSION_ID        7.20.0
406
407
408
409
410
411
412



413
414
415
416
417
418
419
CURLOPT_DNS_CACHE_TIMEOUT       7.9.3
CURLOPT_DNS_INTERFACE           7.33.0
CURLOPT_DNS_LOCAL_IP4           7.33.0
CURLOPT_DNS_LOCAL_IP6           7.33.0
CURLOPT_DNS_SERVERS             7.24.0
CURLOPT_DNS_SHUFFLE_ADDRESSES   7.60.0
CURLOPT_DNS_USE_GLOBAL_CACHE    7.9.3         7.11.1



CURLOPT_DOH_URL                 7.62.0
CURLOPT_EGDSOCKET               7.7
CURLOPT_ENCODING                7.10
CURLOPT_ERRORBUFFER             7.1
CURLOPT_EXPECT_100_TIMEOUT_MS   7.36.0
CURLOPT_FAILONERROR             7.1
CURLOPT_FILE                    7.1           7.9.7







>
>
>







407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
CURLOPT_DNS_CACHE_TIMEOUT       7.9.3
CURLOPT_DNS_INTERFACE           7.33.0
CURLOPT_DNS_LOCAL_IP4           7.33.0
CURLOPT_DNS_LOCAL_IP6           7.33.0
CURLOPT_DNS_SERVERS             7.24.0
CURLOPT_DNS_SHUFFLE_ADDRESSES   7.60.0
CURLOPT_DNS_USE_GLOBAL_CACHE    7.9.3         7.11.1
CURLOPT_DOH_SSL_VERIFYHOST      7.76.0
CURLOPT_DOH_SSL_VERIFYPEER      7.76.0
CURLOPT_DOH_SSL_VERIFYSTATUS    7.76.0
CURLOPT_DOH_URL                 7.62.0
CURLOPT_EGDSOCKET               7.7
CURLOPT_ENCODING                7.10
CURLOPT_ERRORBUFFER             7.1
CURLOPT_EXPECT_100_TIMEOUT_MS   7.36.0
CURLOPT_FAILONERROR             7.1
CURLOPT_FILE                    7.1           7.9.7
802
803
804
805
806
807
808

809
810
811
812
813
814
815
CURLSSLBACKEND_LIBRESSL         7.49.0
CURLSSLBACKEND_MBEDTLS          7.46.0
CURLSSLBACKEND_MESALINK         7.62.0
CURLSSLBACKEND_NONE             7.34.0
CURLSSLBACKEND_NSS              7.34.0
CURLSSLBACKEND_OPENSSL          7.34.0
CURLSSLBACKEND_POLARSSL         7.34.0       7.69.0

CURLSSLBACKEND_QSOSSL           7.34.0        -           7.38.1
CURLSSLBACKEND_SCHANNEL         7.34.0
CURLSSLBACKEND_SECURETRANSPORT  7.64.1
CURLSSLBACKEND_WOLFSSL          7.49.0
CURLSSLOPT_ALLOW_BEAST          7.25.0
CURLSSLOPT_NATIVE_CA            7.71.0
CURLSSLOPT_NO_PARTIALCHAIN      7.68.0







>







806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
CURLSSLBACKEND_LIBRESSL         7.49.0
CURLSSLBACKEND_MBEDTLS          7.46.0
CURLSSLBACKEND_MESALINK         7.62.0
CURLSSLBACKEND_NONE             7.34.0
CURLSSLBACKEND_NSS              7.34.0
CURLSSLBACKEND_OPENSSL          7.34.0
CURLSSLBACKEND_POLARSSL         7.34.0       7.69.0
CURLSSLBACKEND_RUSTLS           7.76.0
CURLSSLBACKEND_QSOSSL           7.34.0        -           7.38.1
CURLSSLBACKEND_SCHANNEL         7.34.0
CURLSSLBACKEND_SECURETRANSPORT  7.64.1
CURLSSLBACKEND_WOLFSSL          7.49.0
CURLSSLOPT_ALLOW_BEAST          7.25.0
CURLSSLOPT_NATIVE_CA            7.71.0
CURLSSLOPT_NO_PARTIALCHAIN      7.68.0
1010
1011
1012
1013
1014
1015
1016

1017
1018
1019
1020
1021
1022
1023
CURL_UPKEEP_INTERVAL_DEFAULT    7.62.0
CURL_VERSION_ALTSVC             7.64.1
CURL_VERSION_ASYNCHDNS          7.10.7
CURL_VERSION_BROTLI             7.57.0
CURL_VERSION_CONV               7.15.4
CURL_VERSION_CURLDEBUG          7.19.6
CURL_VERSION_DEBUG              7.10.6

CURL_VERSION_GSSAPI             7.38.0
CURL_VERSION_GSSNEGOTIATE       7.10.6        7.38.0
CURL_VERSION_HSTS               7.74.0
CURL_VERSION_HTTP2              7.33.0
CURL_VERSION_HTTP3              7.66.0
CURL_VERSION_HTTPS_PROXY        7.52.0
CURL_VERSION_IDN                7.12.0







>







1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
CURL_UPKEEP_INTERVAL_DEFAULT    7.62.0
CURL_VERSION_ALTSVC             7.64.1
CURL_VERSION_ASYNCHDNS          7.10.7
CURL_VERSION_BROTLI             7.57.0
CURL_VERSION_CONV               7.15.4
CURL_VERSION_CURLDEBUG          7.19.6
CURL_VERSION_DEBUG              7.10.6
CURL_VERSION_GSASL              7.76.0
CURL_VERSION_GSSAPI             7.38.0
CURL_VERSION_GSSNEGOTIATE       7.10.6        7.38.0
CURL_VERSION_HSTS               7.74.0
CURL_VERSION_HTTP2              7.33.0
CURL_VERSION_HTTP3              7.66.0
CURL_VERSION_HTTPS_PROXY        7.52.0
CURL_VERSION_IDN                7.12.0
Changes to jni/curl/docs/options-in-versions.
46
47
48
49
50
51
52


53
54
55
56
57
58
59
60
61

62
63
64
65
66
67
68
--disable-eprt                       7.10.5
--disable-epsv                       7.9.2
--disallow-username-in-url           7.61.0
--dns-interface                      7.33.0
--dns-ipv4-addr                      7.33.0
--dns-ipv6-addr                      7.33.0
--dns-servers                        7.33.0


--doh-url                            7.62.0
--dump-header (-D)                   5.7
--egd-file                           7.7
--engine                             7.9.3
--etag-compare                       7.68.0
--etag-save                          7.68.0
--expect100-timeout                  7.47.0
--fail (-f)                          4.0
--fail-early                         7.52.0

--false-start                        7.42.0
--form (-F)                          5.0
--form-string                        7.13.2
--ftp-account                        7.13.0
--ftp-alternative-to-user            7.15.5
--ftp-create-dirs                    7.10.7
--ftp-method                         7.15.1







>
>









>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
--disable-eprt                       7.10.5
--disable-epsv                       7.9.2
--disallow-username-in-url           7.61.0
--dns-interface                      7.33.0
--dns-ipv4-addr                      7.33.0
--dns-ipv6-addr                      7.33.0
--dns-servers                        7.33.0
--doh-cert-status                    7.76.0
--doh-insecure                       7.76.0
--doh-url                            7.62.0
--dump-header (-D)                   5.7
--egd-file                           7.7
--engine                             7.9.3
--etag-compare                       7.68.0
--etag-save                          7.68.0
--expect100-timeout                  7.47.0
--fail (-f)                          4.0
--fail-early                         7.52.0
--fail-with-body                     7.76.0
--false-start                        7.42.0
--form (-F)                          5.0
--form-string                        7.13.2
--ftp-account                        7.13.0
--ftp-alternative-to-user            7.15.5
--ftp-create-dirs                    7.10.7
--ftp-method                         7.15.1
Changes to jni/curl/include/Makefile.in.
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345

346
347
348



349
350
351
352
353
354
355
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







324
325
326
327
328
329
330

331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/include/curl/Makefile.in.
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332

333
334
335



336
337
338
339
340
341
342
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







311
312
313
314
315
316
317

318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/include/curl/curl.h.
151
152
153
154
155
156
157
158

159
160
161
162
163
164
165
  CURLSSLBACKEND_POLARSSL = 6,
  CURLSSLBACKEND_WOLFSSL = 7,
  CURLSSLBACKEND_SCHANNEL = 8,
  CURLSSLBACKEND_SECURETRANSPORT = 9,
  CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */
  CURLSSLBACKEND_MBEDTLS = 11,
  CURLSSLBACKEND_MESALINK = 12,
  CURLSSLBACKEND_BEARSSL = 13

} curl_sslbackend;

/* aliases for library clones and renames */
#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL

/* deprecated names: */







|
>







151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
  CURLSSLBACKEND_POLARSSL = 6,
  CURLSSLBACKEND_WOLFSSL = 7,
  CURLSSLBACKEND_SCHANNEL = 8,
  CURLSSLBACKEND_SECURETRANSPORT = 9,
  CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */
  CURLSSLBACKEND_MBEDTLS = 11,
  CURLSSLBACKEND_MESALINK = 12,
  CURLSSLBACKEND_BEARSSL = 13,
  CURLSSLBACKEND_RUSTLS = 14
} curl_sslbackend;

/* aliases for library clones and renames */
#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL

/* deprecated names: */
2074
2075
2076
2077
2078
2079
2080









2081
2082
2083
2084
2085
2086
2087
  /* HSTS write callback */
  CURLOPT(CURLOPT_HSTSWRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 303),
  CURLOPT(CURLOPT_HSTSWRITEDATA, CURLOPTTYPE_CBPOINT, 304),

  /* Parameters for V4 signature */
  CURLOPT(CURLOPT_AWS_SIGV4, CURLOPTTYPE_STRINGPOINT, 305),










  CURLOPT_LASTENTRY /* the last unused */
} CURLoption;

#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                          the obsolete stuff removed! */

/* Backwards compatibility with older names */







>
>
>
>
>
>
>
>
>







2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
  /* HSTS write callback */
  CURLOPT(CURLOPT_HSTSWRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 303),
  CURLOPT(CURLOPT_HSTSWRITEDATA, CURLOPTTYPE_CBPOINT, 304),

  /* Parameters for V4 signature */
  CURLOPT(CURLOPT_AWS_SIGV4, CURLOPTTYPE_STRINGPOINT, 305),

  /* Same as CURLOPT_SSL_VERIFYPEER but for DOH (DNS-over-HTTPS) servers. */
  CURLOPT(CURLOPT_DOH_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 306),

  /* Same as CURLOPT_SSL_VERIFYHOST but for DOH (DNS-over-HTTPS) servers. */
  CURLOPT(CURLOPT_DOH_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 307),

  /* Same as CURLOPT_SSL_VERIFYSTATUS but for DOH (DNS-over-HTTPS) servers. */
  CURLOPT(CURLOPT_DOH_SSL_VERIFYSTATUS, CURLOPTTYPE_LONG, 308),

  CURLOPT_LASTENTRY /* the last unused */
} CURLoption;

#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                          the obsolete stuff removed! */

/* Backwards compatibility with older names */
2747
2748
2749
2750
2751
2752
2753

2754
2755
2756
2757
2758
2759
2760
2761
2762
  CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53,
  CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,
  CURLINFO_REDIRECT_TIME_T  = CURLINFO_OFF_T + 55,
  CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,
  CURLINFO_RETRY_AFTER      = CURLINFO_OFF_T + 57,
  CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58,
  CURLINFO_PROXY_ERROR      = CURLINFO_LONG + 59,


  CURLINFO_LASTONE          = 59
} CURLINFO;

/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
   CURLINFO_HTTP_CODE */
#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE

typedef enum {







>

|







2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
  CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53,
  CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,
  CURLINFO_REDIRECT_TIME_T  = CURLINFO_OFF_T + 55,
  CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,
  CURLINFO_RETRY_AFTER      = CURLINFO_OFF_T + 57,
  CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58,
  CURLINFO_PROXY_ERROR      = CURLINFO_LONG + 59,
  CURLINFO_REFERER          = CURLINFO_STRING + 60,

  CURLINFO_LASTONE          = 60
} CURLINFO;

/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
   CURLINFO_HTTP_CODE */
#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE

typedef enum {
2949
2950
2951
2952
2953
2954
2955

2956
2957
2958
2959
2960
2961
2962
#define CURL_VERSION_MULTI_SSL    (1<<22) /* Multiple SSL backends available */
#define CURL_VERSION_BROTLI       (1<<23) /* Brotli features are present. */
#define CURL_VERSION_ALTSVC       (1<<24) /* Alt-Svc handling built-in */
#define CURL_VERSION_HTTP3        (1<<25) /* HTTP3 support built-in */
#define CURL_VERSION_ZSTD         (1<<26) /* zstd features are present */
#define CURL_VERSION_UNICODE      (1<<27) /* Unicode support on Windows */
#define CURL_VERSION_HSTS         (1<<28) /* HSTS is supported */


 /*
 * NAME curl_version_info()
 *
 * DESCRIPTION
 *
 * This function returns a pointer to a static copy of the version info







>







2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
#define CURL_VERSION_MULTI_SSL    (1<<22) /* Multiple SSL backends available */
#define CURL_VERSION_BROTLI       (1<<23) /* Brotli features are present. */
#define CURL_VERSION_ALTSVC       (1<<24) /* Alt-Svc handling built-in */
#define CURL_VERSION_HTTP3        (1<<25) /* HTTP3 support built-in */
#define CURL_VERSION_ZSTD         (1<<26) /* zstd features are present */
#define CURL_VERSION_UNICODE      (1<<27) /* Unicode support on Windows */
#define CURL_VERSION_HSTS         (1<<28) /* HSTS is supported */
#define CURL_VERSION_GSASL        (1<<29) /* libgsasl is supported */

 /*
 * NAME curl_version_info()
 *
 * DESCRIPTION
 *
 * This function returns a pointer to a static copy of the version info
Changes to jni/curl/include/curl/curlver.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef CURLINC_CURLVER_H
#define CURLINC_CURLVER_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

/* This header file contains nothing but libcurl version info, generated by
   a script at release-time. This was made its own header file in 7.11.2 */

/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "1996 - 2020 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.75.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 75
#define LIBCURL_VERSION_PATCH 0

/* This is the numeric version of the libcurl version number, meant for easier
   parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will
   always follow this syntax:

         0xXXYYZZ









|


















|



|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef CURLINC_CURLVER_H
#define CURLINC_CURLVER_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

/* This header file contains nothing but libcurl version info, generated by
   a script at release-time. This was made its own header file in 7.11.2 */

/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "1996 - 2021 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.76.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 76
#define LIBCURL_VERSION_PATCH 0

/* This is the numeric version of the libcurl version number, meant for easier
   parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will
   always follow this syntax:

         0xXXYYZZ
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
   and it is always a greater number in a more recent release. It makes
   comparisons with greater than and less than work.

   Note: This define is the full hex number and _does not_ use the
   CURL_VERSION_BITS() macro since curl's own configure script greps for it
   and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x074b00

/*
 * This is the date and time when the full source package was created. The
 * timestamp is not stored in git, as the timestamp is properly set in the
 * tarballs by the maketgz script.
 *
 * The format of the date follows this template:
 *
 * "2007-11-23"
 */
#define LIBCURL_TIMESTAMP "2021-02-03"

#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))

#endif /* CURLINC_CURLVER_H */







|










|






53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
   and it is always a greater number in a more recent release. It makes
   comparisons with greater than and less than work.

   Note: This define is the full hex number and _does not_ use the
   CURL_VERSION_BITS() macro since curl's own configure script greps for it
   and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x074c00

/*
 * This is the date and time when the full source package was created. The
 * timestamp is not stored in git, as the timestamp is properly set in the
 * tarballs by the maketgz script.
 *
 * The format of the date follows this template:
 *
 * "2007-11-23"
 */
#define LIBCURL_TIMESTAMP "2021-03-31"

#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))

#endif /* CURLINC_CURLVER_H */
Changes to jni/curl/lib/CMakeLists.txt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
113
114
115
116
117
118
119

120

121

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  set_target_properties(${LIB_NAME} PROPERTIES
    INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE
    INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE)
endif()

if(WIN32)
  if(BUILD_SHARED_LIBS)

    # Add "_imp" as a suffix before the extension to avoid conflicting with the statically linked "libcurl.lib"

    set_target_properties(${LIB_NAME} PROPERTIES IMPORT_SUFFIX "_imp.lib")

  endif()
endif()

target_include_directories(${LIB_NAME} INTERFACE
  $<INSTALL_INTERFACE:include>
  $<BUILD_INTERFACE:${CURL_SOURCE_DIR}/include>)

install(TARGETS ${LIB_NAME}
  EXPORT ${TARGETS_EXPORT_NAME}
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

export(TARGETS ${LIB_NAME}
       APPEND FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
       NAMESPACE ${PROJECT_NAME}::
)







>
|
>
|
>




|













113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
  set_target_properties(${LIB_NAME} PROPERTIES
    INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE
    INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE)
endif()

if(WIN32)
  if(BUILD_SHARED_LIBS)
    if(MSVC)
      # Add "_imp" as a suffix before the extension to avoid conflicting with
      # the statically linked "libcurl.lib"
      set_target_properties(${LIB_NAME} PROPERTIES IMPORT_SUFFIX "_imp.lib")
    endif()
  endif()
endif()

target_include_directories(${LIB_NAME} INTERFACE
  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
  $<BUILD_INTERFACE:${CURL_SOURCE_DIR}/include>)

install(TARGETS ${LIB_NAME}
  EXPORT ${TARGETS_EXPORT_NAME}
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

export(TARGETS ${LIB_NAME}
       APPEND FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
       NAMESPACE ${PROJECT_NAME}::
)
Changes to jni/curl/lib/Makefile.in.
230
231
232
233
234
235
236
237

238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
	libcurl_la-transfer.lo libcurl_la-url.lo libcurl_la-urlapi.lo \
	libcurl_la-version.lo libcurl_la-version_win32.lo \
	libcurl_la-warnless.lo libcurl_la-wildcard.lo \
	libcurl_la-x509asn1.lo
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_2 = vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
	vauth/libcurl_la-digest.lo vauth/libcurl_la-digest_sspi.lo \
	vauth/libcurl_la-krb5_gssapi.lo vauth/libcurl_la-krb5_sspi.lo \

	vauth/libcurl_la-ntlm.lo vauth/libcurl_la-ntlm_sspi.lo \
	vauth/libcurl_la-oauth2.lo vauth/libcurl_la-spnego_gssapi.lo \
	vauth/libcurl_la-spnego_sspi.lo vauth/libcurl_la-vauth.lo
am__objects_3 = vtls/libcurl_la-bearssl.lo vtls/libcurl_la-gskit.lo \
	vtls/libcurl_la-gtls.lo vtls/libcurl_la-keylog.lo \
	vtls/libcurl_la-mbedtls.lo \
	vtls/libcurl_la-mbedtls_threadlock.lo \
	vtls/libcurl_la-mesalink.lo vtls/libcurl_la-nss.lo \
	vtls/libcurl_la-openssl.lo vtls/libcurl_la-schannel.lo \
	vtls/libcurl_la-schannel_verify.lo \
	vtls/libcurl_la-sectransp.lo vtls/libcurl_la-vtls.lo \
	vtls/libcurl_la-wolfssl.lo
am__objects_4 = vquic/libcurl_la-ngtcp2.lo vquic/libcurl_la-quiche.lo \
	vquic/libcurl_la-vquic.lo
am__objects_5 = vssh/libcurl_la-libssh.lo vssh/libcurl_la-libssh2.lo \
	vssh/libcurl_la-wolfssh.lo
am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \







|
>
|
|






|
|







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
	libcurl_la-transfer.lo libcurl_la-url.lo libcurl_la-urlapi.lo \
	libcurl_la-version.lo libcurl_la-version_win32.lo \
	libcurl_la-warnless.lo libcurl_la-wildcard.lo \
	libcurl_la-x509asn1.lo
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_2 = vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
	vauth/libcurl_la-digest.lo vauth/libcurl_la-digest_sspi.lo \
	vauth/libcurl_la-gsasl.lo vauth/libcurl_la-krb5_gssapi.lo \
	vauth/libcurl_la-krb5_sspi.lo vauth/libcurl_la-ntlm.lo \
	vauth/libcurl_la-ntlm_sspi.lo vauth/libcurl_la-oauth2.lo \
	vauth/libcurl_la-spnego_gssapi.lo \
	vauth/libcurl_la-spnego_sspi.lo vauth/libcurl_la-vauth.lo
am__objects_3 = vtls/libcurl_la-bearssl.lo vtls/libcurl_la-gskit.lo \
	vtls/libcurl_la-gtls.lo vtls/libcurl_la-keylog.lo \
	vtls/libcurl_la-mbedtls.lo \
	vtls/libcurl_la-mbedtls_threadlock.lo \
	vtls/libcurl_la-mesalink.lo vtls/libcurl_la-nss.lo \
	vtls/libcurl_la-openssl.lo vtls/libcurl_la-rustls.lo \
	vtls/libcurl_la-schannel.lo vtls/libcurl_la-schannel_verify.lo \
	vtls/libcurl_la-sectransp.lo vtls/libcurl_la-vtls.lo \
	vtls/libcurl_la-wolfssl.lo
am__objects_4 = vquic/libcurl_la-ngtcp2.lo vquic/libcurl_la-quiche.lo \
	vquic/libcurl_la-vquic.lo
am__objects_5 = vssh/libcurl_la-libssh.lo vssh/libcurl_la-libssh2.lo \
	vssh/libcurl_la-wolfssh.lo
am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338

339
340
341
342
343
344
345
	libcurlu_la-tftp.lo libcurlu_la-timeval.lo \
	libcurlu_la-transfer.lo libcurlu_la-url.lo \
	libcurlu_la-urlapi.lo libcurlu_la-version.lo \
	libcurlu_la-version_win32.lo libcurlu_la-warnless.lo \
	libcurlu_la-wildcard.lo libcurlu_la-x509asn1.lo
am__objects_10 = vauth/libcurlu_la-cleartext.lo \
	vauth/libcurlu_la-cram.lo vauth/libcurlu_la-digest.lo \
	vauth/libcurlu_la-digest_sspi.lo \
	vauth/libcurlu_la-krb5_gssapi.lo \
	vauth/libcurlu_la-krb5_sspi.lo vauth/libcurlu_la-ntlm.lo \
	vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \
	vauth/libcurlu_la-spnego_gssapi.lo \
	vauth/libcurlu_la-spnego_sspi.lo vauth/libcurlu_la-vauth.lo
am__objects_11 = vtls/libcurlu_la-bearssl.lo vtls/libcurlu_la-gskit.lo \
	vtls/libcurlu_la-gtls.lo vtls/libcurlu_la-keylog.lo \
	vtls/libcurlu_la-mbedtls.lo \
	vtls/libcurlu_la-mbedtls_threadlock.lo \
	vtls/libcurlu_la-mesalink.lo vtls/libcurlu_la-nss.lo \
	vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-schannel.lo \

	vtls/libcurlu_la-schannel_verify.lo \
	vtls/libcurlu_la-sectransp.lo vtls/libcurlu_la-vtls.lo \
	vtls/libcurlu_la-wolfssl.lo
am__objects_12 = vquic/libcurlu_la-ngtcp2.lo \
	vquic/libcurlu_la-quiche.lo vquic/libcurlu_la-vquic.lo
am__objects_13 = vssh/libcurlu_la-libssh.lo \
	vssh/libcurlu_la-libssh2.lo vssh/libcurlu_la-wolfssh.lo







|










|
>







321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
	libcurlu_la-tftp.lo libcurlu_la-timeval.lo \
	libcurlu_la-transfer.lo libcurlu_la-url.lo \
	libcurlu_la-urlapi.lo libcurlu_la-version.lo \
	libcurlu_la-version_win32.lo libcurlu_la-warnless.lo \
	libcurlu_la-wildcard.lo libcurlu_la-x509asn1.lo
am__objects_10 = vauth/libcurlu_la-cleartext.lo \
	vauth/libcurlu_la-cram.lo vauth/libcurlu_la-digest.lo \
	vauth/libcurlu_la-digest_sspi.lo vauth/libcurlu_la-gsasl.lo \
	vauth/libcurlu_la-krb5_gssapi.lo \
	vauth/libcurlu_la-krb5_sspi.lo vauth/libcurlu_la-ntlm.lo \
	vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \
	vauth/libcurlu_la-spnego_gssapi.lo \
	vauth/libcurlu_la-spnego_sspi.lo vauth/libcurlu_la-vauth.lo
am__objects_11 = vtls/libcurlu_la-bearssl.lo vtls/libcurlu_la-gskit.lo \
	vtls/libcurlu_la-gtls.lo vtls/libcurlu_la-keylog.lo \
	vtls/libcurlu_la-mbedtls.lo \
	vtls/libcurlu_la-mbedtls_threadlock.lo \
	vtls/libcurlu_la-mesalink.lo vtls/libcurlu_la-nss.lo \
	vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-rustls.lo \
	vtls/libcurlu_la-schannel.lo \
	vtls/libcurlu_la-schannel_verify.lo \
	vtls/libcurlu_la-sectransp.lo vtls/libcurlu_la-vtls.lo \
	vtls/libcurlu_la-wolfssl.lo
am__objects_12 = vquic/libcurlu_la-ngtcp2.lo \
	vquic/libcurlu_la-quiche.lo vquic/libcurlu_la-vquic.lo
am__objects_13 = vssh/libcurlu_la-libssh.lo \
	vssh/libcurlu_la-libssh2.lo vssh/libcurlu_la-wolfssh.lo
600
601
602
603
604
605
606

607
608
609
610
611
612
613
614
615
616
617
618

619
620
621
622
623
624
625
	./$(DEPDIR)/libcurlu_la-warnless.Plo \
	./$(DEPDIR)/libcurlu_la-wildcard.Plo \
	./$(DEPDIR)/libcurlu_la-x509asn1.Plo \
	vauth/$(DEPDIR)/libcurl_la-cleartext.Plo \
	vauth/$(DEPDIR)/libcurl_la-cram.Plo \
	vauth/$(DEPDIR)/libcurl_la-digest.Plo \
	vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo \

	vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo \
	vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo \
	vauth/$(DEPDIR)/libcurl_la-ntlm.Plo \
	vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo \
	vauth/$(DEPDIR)/libcurl_la-oauth2.Plo \
	vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo \
	vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo \
	vauth/$(DEPDIR)/libcurl_la-vauth.Plo \
	vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo \
	vauth/$(DEPDIR)/libcurlu_la-cram.Plo \
	vauth/$(DEPDIR)/libcurlu_la-digest.Plo \
	vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo \

	vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo \
	vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo \
	vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo \







>












>







602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
	./$(DEPDIR)/libcurlu_la-warnless.Plo \
	./$(DEPDIR)/libcurlu_la-wildcard.Plo \
	./$(DEPDIR)/libcurlu_la-x509asn1.Plo \
	vauth/$(DEPDIR)/libcurl_la-cleartext.Plo \
	vauth/$(DEPDIR)/libcurl_la-cram.Plo \
	vauth/$(DEPDIR)/libcurl_la-digest.Plo \
	vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo \
	vauth/$(DEPDIR)/libcurl_la-gsasl.Plo \
	vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo \
	vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo \
	vauth/$(DEPDIR)/libcurl_la-ntlm.Plo \
	vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo \
	vauth/$(DEPDIR)/libcurl_la-oauth2.Plo \
	vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo \
	vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo \
	vauth/$(DEPDIR)/libcurl_la-vauth.Plo \
	vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo \
	vauth/$(DEPDIR)/libcurlu_la-cram.Plo \
	vauth/$(DEPDIR)/libcurlu_la-digest.Plo \
	vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-gsasl.Plo \
	vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo \
	vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo \
	vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo \
	vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo \
641
642
643
644
645
646
647

648
649
650
651
652
653
654
655
656
657
658
659
660
661

662
663
664
665
666
667
668
	vtls/$(DEPDIR)/libcurl_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-keylog.Plo \
	vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo \
	vtls/$(DEPDIR)/libcurl_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurl_la-nss.Plo \
	vtls/$(DEPDIR)/libcurl_la-openssl.Plo \

	vtls/$(DEPDIR)/libcurl_la-schannel.Plo \
	vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo \
	vtls/$(DEPDIR)/libcurl_la-sectransp.Plo \
	vtls/$(DEPDIR)/libcurl_la-vtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-gskit.Plo \
	vtls/$(DEPDIR)/libcurlu_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-keylog.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurlu_la-nss.Plo \
	vtls/$(DEPDIR)/libcurlu_la-openssl.Plo \

	vtls/$(DEPDIR)/libcurlu_la-schannel.Plo \
	vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo \
	vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo \
	vtls/$(DEPDIR)/libcurlu_la-vtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \







>














>







645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
	vtls/$(DEPDIR)/libcurl_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-keylog.Plo \
	vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo \
	vtls/$(DEPDIR)/libcurl_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurl_la-nss.Plo \
	vtls/$(DEPDIR)/libcurl_la-openssl.Plo \
	vtls/$(DEPDIR)/libcurl_la-rustls.Plo \
	vtls/$(DEPDIR)/libcurl_la-schannel.Plo \
	vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo \
	vtls/$(DEPDIR)/libcurl_la-sectransp.Plo \
	vtls/$(DEPDIR)/libcurl_la-vtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-gskit.Plo \
	vtls/$(DEPDIR)/libcurlu_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-keylog.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurlu_la-nss.Plo \
	vtls/$(DEPDIR)/libcurlu_la-openssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-rustls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-schannel.Plo \
	vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo \
	vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo \
	vtls/$(DEPDIR)/libcurlu_la-vtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865

866
867
868



869
870
871
872
873
874
875
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







850
851
852
853
854
855
856

857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
1003
1004
1005
1006
1007
1008
1009

1010
1011
1012
1013
1014
1015
1016
libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
libcurlu_la_CFLAGS = $(AM_CFLAGS)
LIB_VAUTH_CFILES = \
  vauth/cleartext.c     \
  vauth/cram.c          \
  vauth/digest.c        \
  vauth/digest_sspi.c   \

  vauth/krb5_gssapi.c   \
  vauth/krb5_sspi.c     \
  vauth/ntlm.c          \
  vauth/ntlm_sspi.c     \
  vauth/oauth2.c        \
  vauth/spnego_gssapi.c \
  vauth/spnego_sspi.c   \







>







1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
libcurlu_la_CFLAGS = $(AM_CFLAGS)
LIB_VAUTH_CFILES = \
  vauth/cleartext.c     \
  vauth/cram.c          \
  vauth/digest.c        \
  vauth/digest_sspi.c   \
  vauth/gsasl.c         \
  vauth/krb5_gssapi.c   \
  vauth/krb5_sspi.c     \
  vauth/ntlm.c          \
  vauth/ntlm_sspi.c     \
  vauth/oauth2.c        \
  vauth/spnego_gssapi.c \
  vauth/spnego_sspi.c   \
1027
1028
1029
1030
1031
1032
1033

1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049

1050
1051
1052
1053
1054
1055
1056
  vtls/gtls.c               \
  vtls/keylog.c             \
  vtls/mbedtls.c            \
  vtls/mbedtls_threadlock.c \
  vtls/mesalink.c           \
  vtls/nss.c                \
  vtls/openssl.c            \

  vtls/schannel.c           \
  vtls/schannel_verify.c    \
  vtls/sectransp.c          \
  vtls/vtls.c               \
  vtls/wolfssl.c

LIB_VTLS_HFILES = \
  vtls/bearssl.h            \
  vtls/gskit.h              \
  vtls/gtls.h               \
  vtls/keylog.h             \
  vtls/mbedtls.h            \
  vtls/mbedtls_threadlock.h \
  vtls/mesalink.h           \
  vtls/nssg.h               \
  vtls/openssl.h            \

  vtls/schannel.h           \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/wolfssl.h

LIB_VQUIC_CFILES = \
  vquic/ngtcp2.c   \







>
















>







1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
  vtls/gtls.c               \
  vtls/keylog.c             \
  vtls/mbedtls.c            \
  vtls/mbedtls_threadlock.c \
  vtls/mesalink.c           \
  vtls/nss.c                \
  vtls/openssl.c            \
  vtls/rustls.c             \
  vtls/schannel.c           \
  vtls/schannel_verify.c    \
  vtls/sectransp.c          \
  vtls/vtls.c               \
  vtls/wolfssl.c

LIB_VTLS_HFILES = \
  vtls/bearssl.h            \
  vtls/gskit.h              \
  vtls/gtls.h               \
  vtls/keylog.h             \
  vtls/mbedtls.h            \
  vtls/mbedtls_threadlock.h \
  vtls/mesalink.h           \
  vtls/nssg.h               \
  vtls/openssl.h            \
  vtls/rustls.h             \
  vtls/schannel.h           \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/wolfssl.h

LIB_VQUIC_CFILES = \
  vquic/ngtcp2.c   \
1437
1438
1439
1440
1441
1442
1443


1444
1445
1446
1447
1448
1449
1450
vauth/libcurl_la-cleartext.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-cram.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-digest.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-digest_sspi.lo: vauth/$(am__dirstamp) \


	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-krb5_gssapi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-krb5_sspi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-ntlm.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)







>
>







1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
vauth/libcurl_la-cleartext.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-cram.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-digest.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-digest_sspi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-gsasl.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-krb5_gssapi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-krb5_sspi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurl_la-ntlm.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
1477
1478
1479
1480
1481
1482
1483


1484
1485
1486
1487
1488
1489
1490
vtls/libcurl_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mesalink.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-nss.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-openssl.lo: vtls/$(am__dirstamp) \


	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-schannel.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-schannel_verify.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-sectransp.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)







>
>







1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
vtls/libcurl_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mesalink.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-nss.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-openssl.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-rustls.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-schannel.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-schannel_verify.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-sectransp.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
1522
1523
1524
1525
1526
1527
1528


1529
1530
1531
1532
1533
1534
1535
vauth/libcurlu_la-cleartext.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-cram.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-digest.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-digest_sspi.lo: vauth/$(am__dirstamp) \


	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-krb5_gssapi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-krb5_sspi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-ntlm.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)







>
>







1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
vauth/libcurlu_la-cleartext.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-cram.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-digest.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-digest_sspi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-gsasl.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-krb5_gssapi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-krb5_sspi.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
vauth/libcurlu_la-ntlm.lo: vauth/$(am__dirstamp) \
	vauth/$(DEPDIR)/$(am__dirstamp)
1556
1557
1558
1559
1560
1561
1562


1563
1564
1565
1566
1567
1568
1569
vtls/libcurlu_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mesalink.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-nss.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-openssl.lo: vtls/$(am__dirstamp) \


	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-schannel.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-schannel_verify.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-sectransp.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)







>
>







1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
vtls/libcurlu_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mesalink.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-nss.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-openssl.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-rustls.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-schannel.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-schannel_verify.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-sectransp.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
1839
1840
1841
1842
1843
1844
1845

1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857

1858
1859
1860
1861
1862
1863
1864
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-warnless.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cleartext.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cram.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-digest.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-ntlm.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-oauth2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-vauth.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-cram.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-digest.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo@am__quote@ # am--include-marker







>












>







1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-warnless.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cleartext.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cram.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-digest.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-gsasl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-ntlm.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-oauth2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-vauth.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-cram.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-digest.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-gsasl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo@am__quote@ # am--include-marker
1880
1881
1882
1883
1884
1885
1886

1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900

1901
1902
1903
1904
1905
1906
1907
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-keylog.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-keylog.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-schannel.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo@am__quote@ # am--include-marker

$(am__depfiles_remade):







>














>







1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-keylog.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-rustls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-keylog.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-rustls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-schannel.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo@am__quote@ # am--include-marker

$(am__depfiles_remade):
2791
2792
2793
2794
2795
2796
2797







2798
2799
2800
2801
2802
2803
2804
vauth/libcurl_la-digest_sspi.lo: vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vauth/libcurl_la-digest_sspi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-digest_sspi.Tpo -c -o vauth/libcurl_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurl_la-digest_sspi.Tpo vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/digest_sspi.c' object='vauth/libcurl_la-digest_sspi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurl_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c








vauth/libcurl_la-krb5_gssapi.lo: vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vauth/libcurl_la-krb5_gssapi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Tpo -c -o vauth/libcurl_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Tpo vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/krb5_gssapi.c' object='vauth/libcurl_la-krb5_gssapi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurl_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c








>
>
>
>
>
>
>







2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
vauth/libcurl_la-digest_sspi.lo: vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vauth/libcurl_la-digest_sspi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-digest_sspi.Tpo -c -o vauth/libcurl_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurl_la-digest_sspi.Tpo vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/digest_sspi.c' object='vauth/libcurl_la-digest_sspi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurl_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c

vauth/libcurl_la-gsasl.lo: vauth/gsasl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vauth/libcurl_la-gsasl.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-gsasl.Tpo -c -o vauth/libcurl_la-gsasl.lo `test -f 'vauth/gsasl.c' || echo '$(srcdir)/'`vauth/gsasl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurl_la-gsasl.Tpo vauth/$(DEPDIR)/libcurl_la-gsasl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/gsasl.c' object='vauth/libcurl_la-gsasl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurl_la-gsasl.lo `test -f 'vauth/gsasl.c' || echo '$(srcdir)/'`vauth/gsasl.c

vauth/libcurl_la-krb5_gssapi.lo: vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vauth/libcurl_la-krb5_gssapi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Tpo -c -o vauth/libcurl_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Tpo vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/krb5_gssapi.c' object='vauth/libcurl_la-krb5_gssapi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurl_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c

2910
2911
2912
2913
2914
2915
2916







2917
2918
2919
2920
2921
2922
2923
vtls/libcurl_la-openssl.lo: vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-openssl.Tpo -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-openssl.Tpo vtls/$(DEPDIR)/libcurl_la-openssl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/openssl.c' object='vtls/libcurl_la-openssl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c








vtls/libcurl_la-schannel.lo: vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-schannel.Tpo -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-schannel.Tpo vtls/$(DEPDIR)/libcurl_la-schannel.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurl_la-schannel.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c








>
>
>
>
>
>
>







2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
vtls/libcurl_la-openssl.lo: vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-openssl.Tpo -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-openssl.Tpo vtls/$(DEPDIR)/libcurl_la-openssl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/openssl.c' object='vtls/libcurl_la-openssl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c

vtls/libcurl_la-rustls.lo: vtls/rustls.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-rustls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-rustls.Tpo -c -o vtls/libcurl_la-rustls.lo `test -f 'vtls/rustls.c' || echo '$(srcdir)/'`vtls/rustls.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-rustls.Tpo vtls/$(DEPDIR)/libcurl_la-rustls.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/rustls.c' object='vtls/libcurl_la-rustls.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-rustls.lo `test -f 'vtls/rustls.c' || echo '$(srcdir)/'`vtls/rustls.c

vtls/libcurl_la-schannel.lo: vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-schannel.Tpo -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-schannel.Tpo vtls/$(DEPDIR)/libcurl_la-schannel.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurl_la-schannel.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c

3848
3849
3850
3851
3852
3853
3854







3855
3856
3857
3858
3859
3860
3861
vauth/libcurlu_la-digest_sspi.lo: vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vauth/libcurlu_la-digest_sspi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Tpo -c -o vauth/libcurlu_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Tpo vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/digest_sspi.c' object='vauth/libcurlu_la-digest_sspi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurlu_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c








vauth/libcurlu_la-krb5_gssapi.lo: vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vauth/libcurlu_la-krb5_gssapi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Tpo -c -o vauth/libcurlu_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Tpo vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/krb5_gssapi.c' object='vauth/libcurlu_la-krb5_gssapi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurlu_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c








>
>
>
>
>
>
>







3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
vauth/libcurlu_la-digest_sspi.lo: vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vauth/libcurlu_la-digest_sspi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Tpo -c -o vauth/libcurlu_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Tpo vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/digest_sspi.c' object='vauth/libcurlu_la-digest_sspi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurlu_la-digest_sspi.lo `test -f 'vauth/digest_sspi.c' || echo '$(srcdir)/'`vauth/digest_sspi.c

vauth/libcurlu_la-gsasl.lo: vauth/gsasl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vauth/libcurlu_la-gsasl.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-gsasl.Tpo -c -o vauth/libcurlu_la-gsasl.lo `test -f 'vauth/gsasl.c' || echo '$(srcdir)/'`vauth/gsasl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurlu_la-gsasl.Tpo vauth/$(DEPDIR)/libcurlu_la-gsasl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/gsasl.c' object='vauth/libcurlu_la-gsasl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurlu_la-gsasl.lo `test -f 'vauth/gsasl.c' || echo '$(srcdir)/'`vauth/gsasl.c

vauth/libcurlu_la-krb5_gssapi.lo: vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vauth/libcurlu_la-krb5_gssapi.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Tpo -c -o vauth/libcurlu_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Tpo vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/krb5_gssapi.c' object='vauth/libcurlu_la-krb5_gssapi.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurlu_la-krb5_gssapi.lo `test -f 'vauth/krb5_gssapi.c' || echo '$(srcdir)/'`vauth/krb5_gssapi.c

3967
3968
3969
3970
3971
3972
3973







3974
3975
3976
3977
3978
3979
3980
vtls/libcurlu_la-openssl.lo: vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/openssl.c' object='vtls/libcurlu_la-openssl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c








vtls/libcurlu_la-schannel.lo: vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurlu_la-schannel.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c








>
>
>
>
>
>
>







4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
vtls/libcurlu_la-openssl.lo: vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/openssl.c' object='vtls/libcurlu_la-openssl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c

vtls/libcurlu_la-rustls.lo: vtls/rustls.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-rustls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-rustls.Tpo -c -o vtls/libcurlu_la-rustls.lo `test -f 'vtls/rustls.c' || echo '$(srcdir)/'`vtls/rustls.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-rustls.Tpo vtls/$(DEPDIR)/libcurlu_la-rustls.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/rustls.c' object='vtls/libcurlu_la-rustls.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-rustls.lo `test -f 'vtls/rustls.c' || echo '$(srcdir)/'`vtls/rustls.c

vtls/libcurlu_la-schannel.lo: vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurlu_la-schannel.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c

4433
4434
4435
4436
4437
4438
4439

4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451

4452
4453
4454
4455
4456
4457
4458
	-rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo

	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-vauth.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo

	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo







>












>







4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
	-rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-gsasl.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-vauth.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-gsasl.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
4474
4475
4476
4477
4478
4479
4480

4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494

4495
4496
4497
4498
4499
4500
4501
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo

	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo

	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \







>














>







4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-rustls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-rustls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
4780
4781
4782
4783
4784
4785
4786

4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798

4799
4800
4801
4802
4803
4804
4805
	-rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo

	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-vauth.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo

	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo







>












>







4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
	-rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-gsasl.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurl_la-vauth.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-cram.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-gsasl.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
	-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
4821
4822
4823
4824
4825
4826
4827

4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841

4842
4843
4844
4845
4846
4847
4848
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo

	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo

	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic







>














>







4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-rustls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-rustls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
Changes to jni/curl/lib/Makefile.inc.
21
22
23
24
25
26
27

28
29
30
31
32
33
34
###########################################################################

LIB_VAUTH_CFILES =      \
  vauth/cleartext.c     \
  vauth/cram.c          \
  vauth/digest.c        \
  vauth/digest_sspi.c   \

  vauth/krb5_gssapi.c   \
  vauth/krb5_sspi.c     \
  vauth/ntlm.c          \
  vauth/ntlm_sspi.c     \
  vauth/oauth2.c        \
  vauth/spnego_gssapi.c \
  vauth/spnego_sspi.c   \







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
###########################################################################

LIB_VAUTH_CFILES =      \
  vauth/cleartext.c     \
  vauth/cram.c          \
  vauth/digest.c        \
  vauth/digest_sspi.c   \
  vauth/gsasl.c         \
  vauth/krb5_gssapi.c   \
  vauth/krb5_sspi.c     \
  vauth/ntlm.c          \
  vauth/ntlm_sspi.c     \
  vauth/oauth2.c        \
  vauth/spnego_gssapi.c \
  vauth/spnego_sspi.c   \
45
46
47
48
49
50
51

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

68
69
70
71
72
73
74
  vtls/gtls.c               \
  vtls/keylog.c             \
  vtls/mbedtls.c            \
  vtls/mbedtls_threadlock.c \
  vtls/mesalink.c           \
  vtls/nss.c                \
  vtls/openssl.c            \

  vtls/schannel.c           \
  vtls/schannel_verify.c    \
  vtls/sectransp.c          \
  vtls/vtls.c               \
  vtls/wolfssl.c

LIB_VTLS_HFILES =           \
  vtls/bearssl.h            \
  vtls/gskit.h              \
  vtls/gtls.h               \
  vtls/keylog.h             \
  vtls/mbedtls.h            \
  vtls/mbedtls_threadlock.h \
  vtls/mesalink.h           \
  vtls/nssg.h               \
  vtls/openssl.h            \

  vtls/schannel.h           \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/wolfssl.h

LIB_VQUIC_CFILES = \
  vquic/ngtcp2.c   \







>
















>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  vtls/gtls.c               \
  vtls/keylog.c             \
  vtls/mbedtls.c            \
  vtls/mbedtls_threadlock.c \
  vtls/mesalink.c           \
  vtls/nss.c                \
  vtls/openssl.c            \
  vtls/rustls.c             \
  vtls/schannel.c           \
  vtls/schannel_verify.c    \
  vtls/sectransp.c          \
  vtls/vtls.c               \
  vtls/wolfssl.c

LIB_VTLS_HFILES =           \
  vtls/bearssl.h            \
  vtls/gskit.h              \
  vtls/gtls.h               \
  vtls/keylog.h             \
  vtls/mbedtls.h            \
  vtls/mbedtls_threadlock.h \
  vtls/mesalink.h           \
  vtls/nssg.h               \
  vtls/openssl.h            \
  vtls/rustls.h             \
  vtls/schannel.h           \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/wolfssl.h

LIB_VQUIC_CFILES = \
  vquic/ngtcp2.c   \
Changes to jni/curl/lib/Makefile.m32.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1999 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
54
55
56
57
58
59
60




61
62
63
64
65
66
67
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
LIBSSH2_PATH = ../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your librtmp package.
ifndef LIBRTMP_PATH
LIBRTMP_PATH = ../../librtmp-2.4




endif
# Edit the path below to point to the base of your libidn2 package.
ifndef LIBIDN2_PATH
LIBIDN2_PATH = ../../libidn2-2.0.3
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1







>
>
>
>







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
LIBSSH2_PATH = ../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your librtmp package.
ifndef LIBRTMP_PATH
LIBRTMP_PATH = ../../librtmp-2.4
endif
# Edit the path below to point to the base of your libgsasl package.
ifndef LIBGSASL_PATH
LIBGSASL_PATH = ../../libgsasl-1.10.0
endif
# Edit the path below to point to the base of your libidn2 package.
ifndef LIBIDN2_PATH
LIBIDN2_PATH = ../../libidn2-2.0.3
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
193
194
195
196
197
198
199



200
201
202
203
204
205
206
ZLIB = 1
endif
ifeq ($(findstring -zstd,$(CFG)),-zstd)
ZSTD = 1
endif
ifeq ($(findstring -brotli,$(CFG)),-brotli)
BROTLI = 1



endif
ifeq ($(findstring -idn2,$(CFG)),-idn2)
IDN2 = 1
endif
ifeq ($(findstring -winidn,$(CFG)),-winidn)
WINIDN = 1
endif







>
>
>







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
ZLIB = 1
endif
ifeq ($(findstring -zstd,$(CFG)),-zstd)
ZSTD = 1
endif
ifeq ($(findstring -brotli,$(CFG)),-brotli)
BROTLI = 1
endif
ifeq ($(findstring -gsasl,$(CFG)),-gsasl)
GSASL = 1
endif
ifeq ($(findstring -idn2,$(CFG)),-idn2)
IDN2 = 1
endif
ifeq ($(findstring -winidn,$(CFG)),-winidn)
WINIDN = 1
endif
342
343
344
345
346
347
348





349
350
351
352
353
354
355
  DLL_LIBS += -L"$(BROTLI_PATH)/lib"
  ifdef BROTLI_LIBS
    DLL_LIBS += $(BROTLI_LIBS)
  else
    DLL_LIBS += -lbrotlidec
  endif
endif





ifdef IDN2
  INCLUDES += -I"$(LIBIDN2_PATH)/include"
  CFLAGS += -DUSE_LIBIDN2
  DLL_LIBS += -L"$(LIBIDN2_PATH)/lib" -lidn2
else
ifdef WINIDN
  CFLAGS += -DUSE_WIN32_IDN







>
>
>
>
>







349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
  DLL_LIBS += -L"$(BROTLI_PATH)/lib"
  ifdef BROTLI_LIBS
    DLL_LIBS += $(BROTLI_LIBS)
  else
    DLL_LIBS += -lbrotlidec
  endif
endif
ifdef GSASL
  INCLUDES += -I"$(LIBGSASL_PATH)/include"
  CFLAGS += -DUSE_GSASL
  DLL_LIBS += -L"$(LIBGSASL_PATH)/lib" -lgsasl
endif
ifdef IDN2
  INCLUDES += -I"$(LIBIDN2_PATH)/include"
  CFLAGS += -DUSE_LIBIDN2
  DLL_LIBS += -L"$(LIBIDN2_PATH)/lib" -lidn2
else
ifdef WINIDN
  CFLAGS += -DUSE_WIN32_IDN
Changes to jni/curl/lib/asyn-ares.c.
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400

  if(res && !res->num_pending) {
    (void)Curl_addrinfo_callback(data, res->last_status, res->temp_ai);
    /* temp_ai ownership is moved to the connection, so we need not free-up
       them */
    res->temp_ai = NULL;

    if(!data->state.async.dns) {
      failf(data, "Could not resolve: %s (%s)",
            data->state.async.hostname,
            ares_strerror(data->state.async.status));
      result = data->conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY:
        CURLE_COULDNT_RESOLVE_HOST;
    }
    else
      *dns = data->state.async.dns;

    destroy_async_data(&data->state.async);
  }

  return result;







|
<
<
<
|
<
<







380
381
382
383
384
385
386
387



388


389
390
391
392
393
394
395

  if(res && !res->num_pending) {
    (void)Curl_addrinfo_callback(data, res->last_status, res->temp_ai);
    /* temp_ai ownership is moved to the connection, so we need not free-up
       them */
    res->temp_ai = NULL;

    if(!data->state.async.dns)



      result = Curl_resolver_error(data);


    else
      *dns = data->state.async.dns;

    destroy_async_data(&data->state.async);
  }

  return result;
Changes to jni/curl/lib/asyn-thread.c.
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/* Data for synchronization between resolver thread and its parent */
struct thread_sync_data {
  curl_mutex_t *mtx;
  int done;
  int port;
  char *hostname;        /* hostname to resolve, Curl_async.hostname
                            duplicate */
#ifdef USE_SOCKETPAIR
  struct Curl_easy *data;
  curl_socket_t sock_pair[2]; /* socket pair */
#endif
  int sock_error;
  struct Curl_addrinfo *res;
#ifdef HAVE_GETADDRINFO
  struct addrinfo hints;







|







159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/* Data for synchronization between resolver thread and its parent */
struct thread_sync_data {
  curl_mutex_t *mtx;
  int done;
  int port;
  char *hostname;        /* hostname to resolve, Curl_async.hostname
                            duplicate */
#ifndef CURL_DISABLE_SOCKETPAIR
  struct Curl_easy *data;
  curl_socket_t sock_pair[2]; /* socket pair */
#endif
  int sock_error;
  struct Curl_addrinfo *res;
#ifdef HAVE_GETADDRINFO
  struct addrinfo hints;
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
  }

  free(tsd->hostname);

  if(tsd->res)
    Curl_freeaddrinfo(tsd->res);

#ifdef USE_SOCKETPAIR
  /*
   * close one end of the socket pair (may be done in resolver thread);
   * the other end (for reading) is always closed in the parent thread.
   */
  if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
    sclose(tsd->sock_pair[1]);
  }







|







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
  }

  free(tsd->hostname);

  if(tsd->res)
    Curl_freeaddrinfo(tsd->res);

#ifndef CURL_DISABLE_SOCKETPAIR
  /*
   * close one end of the socket pair (may be done in resolver thread);
   * the other end (for reading) is always closed in the parent thread.
   */
  if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
    sclose(tsd->sock_pair[1]);
  }
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253

  tsd->mtx = malloc(sizeof(curl_mutex_t));
  if(tsd->mtx == NULL)
    goto err_exit;

  Curl_mutex_init(tsd->mtx);

#ifdef USE_SOCKETPAIR
  /* create socket pair, avoid AF_LOCAL since it doesn't build on Solaris */
  if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, &tsd->sock_pair[0]) < 0) {
    tsd->sock_pair[0] = CURL_SOCKET_BAD;
    tsd->sock_pair[1] = CURL_SOCKET_BAD;
    goto err_exit;
  }
#endif







|







239
240
241
242
243
244
245
246
247
248
249
250
251
252
253

  tsd->mtx = malloc(sizeof(curl_mutex_t));
  if(tsd->mtx == NULL)
    goto err_exit;

  Curl_mutex_init(tsd->mtx);

#ifndef CURL_DISABLE_SOCKETPAIR
  /* create socket pair, avoid AF_LOCAL since it doesn't build on Solaris */
  if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, &tsd->sock_pair[0]) < 0) {
    tsd->sock_pair[0] = CURL_SOCKET_BAD;
    tsd->sock_pair[1] = CURL_SOCKET_BAD;
    goto err_exit;
  }
#endif
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
 */
static unsigned int CURL_STDCALL getaddrinfo_thread(void *arg)
{
  struct thread_sync_data *tsd = (struct thread_sync_data *)arg;
  struct thread_data *td = tsd->td;
  char service[12];
  int rc;
#ifdef USE_SOCKETPAIR
  char buf[1];
#endif

  msnprintf(service, sizeof(service), "%d", tsd->port);

  rc = Curl_getaddrinfo_ex(tsd->hostname, service, &tsd->hints, &tsd->res);








|







293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
 */
static unsigned int CURL_STDCALL getaddrinfo_thread(void *arg)
{
  struct thread_sync_data *tsd = (struct thread_sync_data *)arg;
  struct thread_data *td = tsd->td;
  char service[12];
  int rc;
#ifndef CURL_DISABLE_SOCKETPAIR
  char buf[1];
#endif

  msnprintf(service, sizeof(service), "%d", tsd->port);

  rc = Curl_getaddrinfo_ex(tsd->hostname, service, &tsd->hints, &tsd->res);

318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
  if(tsd->done) {
    /* too late, gotta clean up the mess */
    Curl_mutex_release(tsd->mtx);
    destroy_thread_sync_data(tsd);
    free(td);
  }
  else {
#ifdef USE_SOCKETPAIR
    if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
      /* DNS has been resolved, signal client task */
      buf[0] = 1;
      if(swrite(tsd->sock_pair[1],  buf, sizeof(buf)) < 0) {
        /* update sock_erro to errno */
        tsd->sock_error = SOCKERRNO;
      }







|







318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
  if(tsd->done) {
    /* too late, gotta clean up the mess */
    Curl_mutex_release(tsd->mtx);
    destroy_thread_sync_data(tsd);
    free(td);
  }
  else {
#ifndef CURL_DISABLE_SOCKETPAIR
    if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
      /* DNS has been resolved, signal client task */
      buf[0] = 1;
      if(swrite(tsd->sock_pair[1],  buf, sizeof(buf)) < 0) {
        /* update sock_erro to errno */
        tsd->sock_error = SOCKERRNO;
      }
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
 * destroy_async_data() cleans up async resolver data and thread handle.
 */
static void destroy_async_data(struct Curl_async *async)
{
  if(async->tdata) {
    struct thread_data *td = async->tdata;
    int done;
#ifdef USE_SOCKETPAIR
    curl_socket_t sock_rd = td->tsd.sock_pair[0];
    struct Curl_easy *data = td->tsd.data;
#endif

    /*
     * if the thread is still blocking in the resolve syscall, detach it and
     * let the thread do the cleanup...







|







378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
 * destroy_async_data() cleans up async resolver data and thread handle.
 */
static void destroy_async_data(struct Curl_async *async)
{
  if(async->tdata) {
    struct thread_data *td = async->tdata;
    int done;
#ifndef CURL_DISABLE_SOCKETPAIR
    curl_socket_t sock_rd = td->tsd.sock_pair[0];
    struct Curl_easy *data = td->tsd.data;
#endif

    /*
     * if the thread is still blocking in the resolve syscall, detach it and
     * let the thread do the cleanup...
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
      if(td->thread_hnd != curl_thread_t_null)
        Curl_thread_join(&td->thread_hnd);

      destroy_thread_sync_data(&td->tsd);

      free(async->tdata);
    }
#ifdef USE_SOCKETPAIR
    /*
     * ensure CURLMOPT_SOCKETFUNCTION fires CURL_POLL_REMOVE
     * before the FD is invalidated to avoid EBADF on EPOLL_CTL_DEL
     */
    Curl_multi_closed(data, sock_rd);
    sclose(sock_rd);
#endif







|







403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
      if(td->thread_hnd != curl_thread_t_null)
        Curl_thread_join(&td->thread_hnd);

      destroy_thread_sync_data(&td->tsd);

      free(async->tdata);
    }
#ifndef CURL_DISABLE_SOCKETPAIR
    /*
     * ensure CURLMOPT_SOCKETFUNCTION fires CURL_POLL_REMOVE
     * before the FD is invalidated to avoid EBADF on EPOLL_CTL_DEL
     */
    Curl_multi_closed(data, sock_rd);
    sclose(sock_rd);
#endif
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
  destroy_async_data(asp);

 errno_exit:
  errno = err;
  return FALSE;
}

/*
 * resolver_error() calls failf() with the appropriate message after a resolve
 * error
 */

static CURLcode resolver_error(struct Curl_easy *data)
{
  const char *host_or_proxy;
  CURLcode result;

#ifndef CURL_DISABLE_PROXY
  struct connectdata *conn = data->conn;
  if(conn->bits.httpproxy) {
    host_or_proxy = "proxy";
    result = CURLE_COULDNT_RESOLVE_PROXY;
  }
  else
#endif
  {
    host_or_proxy = "host";
    result = CURLE_COULDNT_RESOLVE_HOST;
  }

  failf(data, "Could not resolve %s: %s", host_or_proxy,
        data->state.async.hostname);

  return result;
}

/*
 * 'entry' may be NULL and then no data is returned
 */
static CURLcode thread_wait_resolv(struct Curl_easy *data,
                                   struct Curl_dns_entry **entry,
                                   bool report)
{







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







479
480
481
482
483
484
485





























486
487
488
489
490
491
492
  destroy_async_data(asp);

 errno_exit:
  errno = err;
  return FALSE;
}






























/*
 * 'entry' may be NULL and then no data is returned
 */
static CURLcode thread_wait_resolv(struct Curl_easy *data,
                                   struct Curl_dns_entry **entry,
                                   bool report)
{
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
  data->state.async.done = TRUE;

  if(entry)
    *entry = data->state.async.dns;

  if(!data->state.async.dns && report)
    /* a name was not resolved, report error */
    result = resolver_error(data);

  destroy_async_data(&data->state.async);

  if(!data->state.async.dns && report)
    connclose(data->conn, "asynch resolve failed");

  return result;







|







509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
  data->state.async.done = TRUE;

  if(entry)
    *entry = data->state.async.dns;

  if(!data->state.async.dns && report)
    /* a name was not resolved, report error */
    result = Curl_resolver_error(data);

  destroy_async_data(&data->state.async);

  if(!data->state.async.dns && report)
    connclose(data->conn, "asynch resolve failed");

  return result;
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
  done = td->tsd.done;
  Curl_mutex_release(td->tsd.mtx);

  if(done) {
    getaddrinfo_complete(data);

    if(!data->state.async.dns) {
      CURLcode result = resolver_error(data);
      destroy_async_data(&data->state.async);
      return result;
    }
    destroy_async_data(&data->state.async);
    *entry = data->state.async.dns;
  }
  else {







|







583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
  done = td->tsd.done;
  Curl_mutex_release(td->tsd.mtx);

  if(done) {
    getaddrinfo_complete(data);

    if(!data->state.async.dns) {
      CURLcode result = Curl_resolver_error(data);
      destroy_async_data(&data->state.async);
      return result;
    }
    destroy_async_data(&data->state.async);
    *entry = data->state.async.dns;
  }
  else {
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689

int Curl_resolver_getsock(struct Curl_easy *data, curl_socket_t *socks)
{
  int ret_val = 0;
  timediff_t milli;
  timediff_t ms;
  struct resdata *reslv = (struct resdata *)data->state.async.resolver;
#ifdef USE_SOCKETPAIR
  struct thread_data *td = data->state.async.tdata;
#else
  (void)socks;
#endif

#ifdef USE_SOCKETPAIR
  if(td) {
    /* return read fd to client for polling the DNS resolution status */
    socks[0] = td->tsd.sock_pair[0];
    td->tsd.data = data;
    ret_val = GETSOCK_READSOCK(0);
  }
  else {
#endif
    ms = Curl_timediff(Curl_now(), reslv->start);
    if(ms < 3)
      milli = 0;
    else if(ms <= 50)
      milli = ms/3;
    else if(ms <= 250)
      milli = 50;
    else
      milli = 200;
    Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
#ifdef USE_SOCKETPAIR
  }
#endif


  return ret_val;
}








|





|


















|







621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660

int Curl_resolver_getsock(struct Curl_easy *data, curl_socket_t *socks)
{
  int ret_val = 0;
  timediff_t milli;
  timediff_t ms;
  struct resdata *reslv = (struct resdata *)data->state.async.resolver;
#ifndef CURL_DISABLE_SOCKETPAIR
  struct thread_data *td = data->state.async.tdata;
#else
  (void)socks;
#endif

#ifndef CURL_DISABLE_SOCKETPAIR
  if(td) {
    /* return read fd to client for polling the DNS resolution status */
    socks[0] = td->tsd.sock_pair[0];
    td->tsd.data = data;
    ret_val = GETSOCK_READSOCK(0);
  }
  else {
#endif
    ms = Curl_timediff(Curl_now(), reslv->start);
    if(ms < 3)
      milli = 0;
    else if(ms <= 50)
      milli = ms/3;
    else if(ms <= 250)
      milli = 50;
    else
      milli = 200;
    Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
#ifndef CURL_DISABLE_SOCKETPAIR
  }
#endif


  return ret_val;
}

Changes to jni/curl/lib/c-hyper.c.
47
48
49
50
51
52
53

54
55
56
57
58
59
60

#include <hyper.h>
#include "urldata.h"
#include "sendf.h"
#include "transfer.h"
#include "multiif.h"
#include "progress.h"


/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

size_t Curl_hyper_recv(void *userp, hyper_context *ctx,







>







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

#include <hyper.h>
#include "urldata.h"
#include "sendf.h"
#include "transfer.h"
#include "multiif.h"
#include "progress.h"
#include "content_encoding.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

size_t Curl_hyper_recv(void *userp, hyper_context *ctx,
171
172
173
174
175
176
177




178
179
180
181
182
183
184
185
      data->state.hresult = result;
      return HYPER_ITER_BREAK;
    }
  }
  if(k->ignorebody)
    return HYPER_ITER_CONTINUE;
  Curl_debug(data, CURLINFO_DATA_IN, buf, len);




  result = Curl_client_write(data, CLIENTWRITE_BODY, buf, len);

  if(result) {
    data->state.hresult = result;
    return HYPER_ITER_BREAK;
  }

  data->req.bytecount += len;







>
>
>
>
|







172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
      data->state.hresult = result;
      return HYPER_ITER_BREAK;
    }
  }
  if(k->ignorebody)
    return HYPER_ITER_CONTINUE;
  Curl_debug(data, CURLINFO_DATA_IN, buf, len);
  if(!data->set.http_ce_skip && k->writer_stack)
    /* content-encoded data */
    result = Curl_unencode_write(data, k->writer_stack, buf, len);
  else
    result = Curl_client_write(data, CLIENTWRITE_BODY, buf, len);

  if(result) {
    data->state.hresult = result;
    return HYPER_ITER_BREAK;
  }

  data->req.bytecount += len;
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
        p = strchr(v, '\0');
        newline = FALSE; /* no newline */
      }
    }
    else
      linelen = 2; /* CRLF ending */
    linelen += (p - n);
    if(!n)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    vlen = p - v;

    if(HYPERE_OK != hyper_headers_add(headers, (uint8_t *)n, nlen,
                                      (uint8_t *)v, vlen)) {
      failf(data, "hyper_headers_add host");
      return CURLE_OUT_OF_MEMORY;
    }







<
<







465
466
467
468
469
470
471


472
473
474
475
476
477
478
        p = strchr(v, '\0');
        newline = FALSE; /* no newline */
      }
    }
    else
      linelen = 2; /* CRLF ending */
    linelen += (p - n);


    vlen = p - v;

    if(HYPERE_OK != hyper_headers_add(headers, (uint8_t *)n, nlen,
                                      (uint8_t *)v, vlen)) {
      failf(data, "hyper_headers_add host");
      return CURLE_OUT_OF_MEMORY;
    }
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751

  req = hyper_request_new();
  if(!req) {
    failf(data, "Couldn't hyper_request_new");
    goto error;
  }

  if(data->set.httpversion == CURL_HTTP_VERSION_1_0) {
    if(HYPERE_OK != hyper_request_set_version(req,
                                              HYPER_HTTP_VERSION_1_0)) {
      failf(data, "error setting HTTP version");
      goto error;
    }
  }








|







740
741
742
743
744
745
746
747
748
749
750
751
752
753
754

  req = hyper_request_new();
  if(!req) {
    failf(data, "Couldn't hyper_request_new");
    goto error;
  }

  if(data->state.httpwant == CURL_HTTP_VERSION_1_0) {
    if(HYPERE_OK != hyper_request_set_version(req,
                                              HYPER_HTTP_VERSION_1_0)) {
      failf(data, "error setting HTTP version");
      goto error;
    }
  }

803
804
805
806
807
808
809
810
811
812
813
814
815
816
817













818
819
820
821
822
823
824
     !Curl_checkProxyheaders(data, conn, "Proxy-Connection")) {
    if(Curl_hyper_header(data, headers, "Proxy-Connection: Keep-Alive"))
      goto error;
  }
#endif

  Curl_safefree(data->state.aptr.ref);
  if(data->change.referer && !Curl_checkheaders(data, "Referer")) {
    data->state.aptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
    if(!data->state.aptr.ref)
      return CURLE_OUT_OF_MEMORY;
    if(Curl_hyper_header(data, headers, data->state.aptr.ref))
      goto error;
  }














  result = cookies(data, conn, headers);
  if(result)
    return result;

  result = Curl_add_timecondition(data, headers);
  if(result)
    return result;







|
|






>
>
>
>
>
>
>
>
>
>
>
>
>







806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
     !Curl_checkProxyheaders(data, conn, "Proxy-Connection")) {
    if(Curl_hyper_header(data, headers, "Proxy-Connection: Keep-Alive"))
      goto error;
  }
#endif

  Curl_safefree(data->state.aptr.ref);
  if(data->state.referer && !Curl_checkheaders(data, "Referer")) {
    data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
    if(!data->state.aptr.ref)
      return CURLE_OUT_OF_MEMORY;
    if(Curl_hyper_header(data, headers, data->state.aptr.ref))
      goto error;
  }

  if(!Curl_checkheaders(data, "Accept-Encoding") &&
     data->set.str[STRING_ENCODING]) {
    Curl_safefree(data->state.aptr.accept_encoding);
    data->state.aptr.accept_encoding =
      aprintf("Accept-Encoding: %s\r\n", data->set.str[STRING_ENCODING]);
    if(!data->state.aptr.accept_encoding)
      return CURLE_OUT_OF_MEMORY;
    if(Curl_hyper_header(data, headers, data->state.aptr.accept_encoding))
      goto error;
  }
  else
    Curl_safefree(data->state.aptr.accept_encoding);

  result = cookies(data, conn, headers);
  if(result)
    return result;

  result = Curl_add_timecondition(data, headers);
  if(result)
    return result;
Changes to jni/curl/lib/config-os400.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_OS400_H
#define HEADER_CURL_CONFIG_OS400_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_OS400_H
#define HEADER_CURL_CONFIG_OS400_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367

/* Define if you have the <sys/un.h> header file. */
#define HAVE_SYS_UN_H

/* Define if you have the <sys/ioctl.h> header file. */
#define HAVE_SYS_IOCTL_H

/* Define if you have the `tcgetattr' function. */
#undef HAVE_TCGETATTR

/* Define if you have the `tcsetattr' function. */
#undef HAVE_TCSETATTR

/* Define if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */







<
<
<
<
<
<







348
349
350
351
352
353
354






355
356
357
358
359
360
361

/* Define if you have the <sys/un.h> header file. */
#define HAVE_SYS_UN_H

/* Define if you have the <sys/ioctl.h> header file. */
#define HAVE_SYS_IOCTL_H







/* Define if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */
Changes to jni/curl/lib/config-plan9.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_PLAN9_H
#define HEADER_CURL_CONFIG_PLAN9_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_PLAN9_H
#define HEADER_CURL_CONFIG_PLAN9_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#define HAVE_STDBOOL_H 1
#define HAVE_STDINT_H 1
#define HAVE_STDIO_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRCASECMP 1
#define HAVE_STRDUP 1
#define HAVE_STRING_H 1
#define HAVE_STRNCASECMP 1
#define HAVE_STRSTR 1
#define HAVE_STRTOK_R 1
#define HAVE_STRTOLL 1
#define HAVE_STRUCT_TIMEVAL 1
#define HAVE_SYS_IOCTL_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_RESOURCE_H 1







<







169
170
171
172
173
174
175

176
177
178
179
180
181
182
#define HAVE_STDBOOL_H 1
#define HAVE_STDINT_H 1
#define HAVE_STDIO_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRCASECMP 1
#define HAVE_STRDUP 1
#define HAVE_STRING_H 1

#define HAVE_STRSTR 1
#define HAVE_STRTOK_R 1
#define HAVE_STRTOLL 1
#define HAVE_STRUCT_TIMEVAL 1
#define HAVE_SYS_IOCTL_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_RESOURCE_H 1
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#define HAVE_ZLIB_H 1

#define HAVE_POSIX_STRERROR_R 1
#define HAVE_STRERROR_R 1
#define STRERROR_R_TYPE_ARG3 int

#define TIME_WITH_SYS_TIME 1
#define USE_BLOCKING_SOCKETS 1
#define USE_MANUAL 1

#define __attribute__(x)

#ifndef __cplusplus
#undef inline
#endif

#endif /* HEADER_CURL_CONFIG_PLAN9_H */







<









197
198
199
200
201
202
203

204
205
206
207
208
209
210
211
212
#define HAVE_ZLIB_H 1

#define HAVE_POSIX_STRERROR_R 1
#define HAVE_STRERROR_R 1
#define STRERROR_R_TYPE_ARG3 int

#define TIME_WITH_SYS_TIME 1

#define USE_MANUAL 1

#define __attribute__(x)

#ifndef __cplusplus
#undef inline
#endif

#endif /* HEADER_CURL_CONFIG_PLAN9_H */
Changes to jni/curl/lib/config-riscos.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_RISCOS_H
#define HEADER_CURL_CONFIG_RISCOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_RISCOS_H
#define HEADER_CURL_CONFIG_RISCOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344

/* Define if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H

/* Define if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H

/* Define if you have the `tcgetattr' function. */
#define HAVE_TCGETATTR

/* Define if you have the `tcsetattr' function. */
#define HAVE_TCSETATTR

/* Define if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */







<
<
<
<
<
<







325
326
327
328
329
330
331






332
333
334
335
336
337
338

/* Define if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H

/* Define if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H







/* Define if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */
Changes to jni/curl/lib/config-tpf.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_TPF_H
#define HEADER_CURL_CONFIG_TPF_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_TPF_H
#define HEADER_CURL_CONFIG_TPF_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1

/* Define if you want to enable ares support */
/* #undef USE_ARES */

/* Define to disable non-blocking sockets */
/* #undef USE_BLOCKING_SOCKETS */

/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */

/* If you want to build curl with the built-in manual */
/* #undef USE_MANUAL */

/* if OpenSSL is in use */







<
<
<







613
614
615
616
617
618
619



620
621
622
623
624
625
626

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1

/* Define if you want to enable ares support */
/* #undef USE_ARES */




/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */

/* If you want to build curl with the built-in manual */
/* #undef USE_MANUAL */

/* if OpenSSL is in use */
Changes to jni/curl/lib/config-vxworks.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_VXWORKS_H
#define HEADER_CURL_CONFIG_VXWORKS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_VXWORKS_H
#define HEADER_CURL_CONFIG_VXWORKS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

/* to disable LDAP */
#define CURL_DISABLE_LDAP 1

/* to disable LDAPS */
#define CURL_DISABLE_LDAPS 1

/* to disable NTLM authentication */
#define CURL_DISABLE_NTLM 1

/* to disable proxies */
/* #undef CURL_DISABLE_PROXY */

/* to disable TELNET */
#define CURL_DISABLE_TELNET 1

/* to disable TFTP */







<
<
<







52
53
54
55
56
57
58



59
60
61
62
63
64
65

/* to disable LDAP */
#define CURL_DISABLE_LDAP 1

/* to disable LDAPS */
#define CURL_DISABLE_LDAPS 1




/* to disable proxies */
/* #undef CURL_DISABLE_PROXY */

/* to disable TELNET */
#define CURL_DISABLE_TELNET 1

/* to disable TFTP */
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the `strlcpy' function. */
/* #undef HAVE_STRLCPY */

/* Define to 1 if you have the strncasecmp function. */
#define HAVE_STRNCASECMP 1

/* Define to 1 if you have the strncmpi function. */
/* #undef HAVE_STRNCMPI */

/* Define to 1 if you have the strnicmp function. */
/* #undef HAVE_STRNICMP */

/* Define to 1 if you have the <stropts.h> header file. */







<
<
<







561
562
563
564
565
566
567



568
569
570
571
572
573
574

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the `strlcpy' function. */
/* #undef HAVE_STRLCPY */




/* Define to 1 if you have the strncmpi function. */
/* #undef HAVE_STRNCMPI */

/* Define to 1 if you have the strnicmp function. */
/* #undef HAVE_STRNICMP */

/* Define to 1 if you have the <stropts.h> header file. */
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
/* #undef TIME_WITH_SYS_TIME */

/* Define if you want to enable c-ares support */
/* #undef USE_ARES */

/* Define to disable non-blocking sockets. */
/* #undef USE_BLOCKING_SOCKETS */

/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */

/* if libSSH2 is in use */
/* #undef USE_LIBSSH2 */

/* If you want to build curl with the built-in manual */







<
<
<







831
832
833
834
835
836
837



838
839
840
841
842
843
844

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
/* #undef TIME_WITH_SYS_TIME */

/* Define if you want to enable c-ares support */
/* #undef USE_ARES */




/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */

/* if libSSH2 is in use */
/* #undef USE_LIBSSH2 */

/* If you want to build curl with the built-in manual */
Changes to jni/curl/lib/config-win32.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_WIN32_H
#define HEADER_CURL_CONFIG_WIN32_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_WIN32_H
#define HEADER_CURL_CONFIG_WIN32_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
243
244
245
246
247
248
249

250

251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
/* Define if you have the setvbuf function. */
#define HAVE_SETVBUF 1

/* Define if you have the socket function. */
#define HAVE_SOCKET 1

/* Define if you have the strcasecmp function. */

/* #define HAVE_STRCASECMP 1 */


/* Define if you have the strdup function. */
#define HAVE_STRDUP 1

/* Define if you have the strftime function. */
#define HAVE_STRFTIME 1

/* Define if you have the stricmp function. */
#define HAVE_STRICMP 1

/* Define if you have the strncasecmp function. */
/* #define HAVE_STRNCASECMP 1 */

/* Define if you have the strnicmp function. */
#define HAVE_STRNICMP 1

/* Define if you have the strstr function. */
#define HAVE_STRSTR 1

/* Define if you have the strtoll function. */
#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__POCC__) || \
    (defined(_MSC_VER) && (_MSC_VER >= 1800))
#define HAVE_STRTOLL 1
#endif

/* Define if you have the tcgetattr function. */
/* #define HAVE_TCGETATTR 1 */

/* Define if you have the tcsetattr function. */
/* #define HAVE_TCSETATTR 1 */

/* Define if you have the utime function. */
#ifndef __BORLANDC__
#define HAVE_UTIME 1
#endif

/* Define to the type qualifier of arg 1 for getnameinfo. */
#define GETNAMEINFO_QUAL_ARG1 const







>
|
>










<
<
<












<
<
<
<
<
<







243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262



263
264
265
266
267
268
269
270
271
272
273
274






275
276
277
278
279
280
281
/* Define if you have the setvbuf function. */
#define HAVE_SETVBUF 1

/* Define if you have the socket function. */
#define HAVE_SOCKET 1

/* Define if you have the strcasecmp function. */
#ifdef __MINGW32__
#define HAVE_STRCASECMP 1
#endif

/* Define if you have the strdup function. */
#define HAVE_STRDUP 1

/* Define if you have the strftime function. */
#define HAVE_STRFTIME 1

/* Define if you have the stricmp function. */
#define HAVE_STRICMP 1




/* Define if you have the strnicmp function. */
#define HAVE_STRNICMP 1

/* Define if you have the strstr function. */
#define HAVE_STRSTR 1

/* Define if you have the strtoll function. */
#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__POCC__) || \
    (defined(_MSC_VER) && (_MSC_VER >= 1800))
#define HAVE_STRTOLL 1
#endif







/* Define if you have the utime function. */
#ifndef __BORLANDC__
#define HAVE_UTIME 1
#endif

/* Define to the type qualifier of arg 1 for getnameinfo. */
#define GETNAMEINFO_QUAL_ARG1 const
498
499
500
501
502
503
504
505
506





507
508
509
510
511
512
513
514

/* Define to avoid VS2005 complaining about portable C functions. */
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
#define _CRT_SECURE_NO_DEPRECATE 1
#define _CRT_NONSTDC_NO_DEPRECATE 1
#endif

/* VS2005 and later default size for time_t is 64-bit, unless
   _USE_32BIT_TIME_T has been defined to get a 32-bit time_t. */





#if defined(_MSC_VER) && (_MSC_VER >= 1400)
#  ifndef _USE_32BIT_TIME_T
#    define SIZEOF_TIME_T 8
#  else
#    define SIZEOF_TIME_T 4
#  endif
#endif








|
|
>
>
>
>
>
|







491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512

/* Define to avoid VS2005 complaining about portable C functions. */
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
#define _CRT_SECURE_NO_DEPRECATE 1
#define _CRT_NONSTDC_NO_DEPRECATE 1
#endif

/* mingw-w64, mingw using >= MSVCR80, and visual studio >= 2005 (MSVCR80)
   all default to 64-bit time_t unless _USE_32BIT_TIME_T is defined */
#ifdef __MINGW32__
#  include <_mingw.h>
#endif
#if defined(__MINGW64_VERSION_MAJOR) || \
    (defined(__MINGW32__) && (__MSVCRT_VERSION__ >= 0x0800)) || \
    (defined(_MSC_VER) && (_MSC_VER >= 1400))
#  ifndef _USE_32BIT_TIME_T
#    define SIZEOF_TIME_T 8
#  else
#    define SIZEOF_TIME_T 4
#  endif
#endif

Changes to jni/curl/lib/config-win32ce.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_WIN32CE_H
#define HEADER_CURL_CONFIG_WIN32CE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_WIN32CE_H
#define HEADER_CURL_CONFIG_WIN32CE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234

/* Define if you have the strftime function.  */
/* #define HAVE_STRFTIME 1 */

/* Define if you have the stricmp function. */
/* #define HAVE_STRICMP 1 */

/* Define if you have the strncasecmp function. */
/* #define HAVE_STRNCASECMP 1 */

/* Define if you have the strnicmp function. */
/* #define HAVE_STRNICMP 1 */

/* Define if you have the strstr function.  */
#define HAVE_STRSTR 1

/* Define if you have the strtoll function.  */
#if defined(__MINGW32__) || defined(__WATCOMC__)
#define HAVE_STRTOLL 1
#endif

/* Define if you have the tcgetattr function.  */
/* #define HAVE_TCGETATTR 1 */

/* Define if you have the tcsetattr function.  */
/* #define HAVE_TCSETATTR 1 */

/* Define if you have the utime function */
#define HAVE_UTIME 1

/* Define if you have the getnameinfo function. */
#define HAVE_GETNAMEINFO 1

/* Define to the type qualifier of arg 1 for getnameinfo. */







<
<
<











<
<
<
<
<
<







201
202
203
204
205
206
207



208
209
210
211
212
213
214
215
216
217
218






219
220
221
222
223
224
225

/* Define if you have the strftime function.  */
/* #define HAVE_STRFTIME 1 */

/* Define if you have the stricmp function. */
/* #define HAVE_STRICMP 1 */




/* Define if you have the strnicmp function. */
/* #define HAVE_STRNICMP 1 */

/* Define if you have the strstr function.  */
#define HAVE_STRSTR 1

/* Define if you have the strtoll function.  */
#if defined(__MINGW32__) || defined(__WATCOMC__)
#define HAVE_STRTOLL 1
#endif







/* Define if you have the utime function */
#define HAVE_UTIME 1

/* Define if you have the getnameinfo function. */
#define HAVE_GETNAMEINFO 1

/* Define to the type qualifier of arg 1 for getnameinfo. */
Changes to jni/curl/lib/conncache.c.
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
  }
  if(conn_candidate) {
    /* remove it to prevent another thread from nicking it */
    bundle_remove_conn(bundle, conn_candidate);
    data->state.conn_cache->num_conn--;
    DEBUGF(infof(data, "The cache now contains %zu members\n",
                 data->state.conn_cache->num_conn));
    conn_candidate->data = data; /* associate! */
  }

  return conn_candidate;
}

/*
 * This function finds the connection in the connection cache that has been







<







462
463
464
465
466
467
468

469
470
471
472
473
474
475
  }
  if(conn_candidate) {
    /* remove it to prevent another thread from nicking it */
    bundle_remove_conn(bundle, conn_candidate);
    data->state.conn_cache->num_conn--;
    DEBUGF(infof(data, "The cache now contains %zu members\n",
                 data->state.conn_cache->num_conn));

  }

  return conn_candidate;
}

/*
 * This function finds the connection in the connection cache that has been
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
  }
  if(conn_candidate) {
    /* remove it to prevent another thread from nicking it */
    bundle_remove_conn(bundle_candidate, conn_candidate);
    connc->num_conn--;
    DEBUGF(infof(data, "The cache now contains %zu members\n",
                 connc->num_conn));
    conn_candidate->data = data; /* associate! */
  }
  CONNCACHE_UNLOCK(data);

  return conn_candidate;
}

void Curl_conncache_close_all_connections(struct conncache *connc)







<







524
525
526
527
528
529
530

531
532
533
534
535
536
537
  }
  if(conn_candidate) {
    /* remove it to prevent another thread from nicking it */
    bundle_remove_conn(bundle_candidate, conn_candidate);
    connc->num_conn--;
    DEBUGF(infof(data, "The cache now contains %zu members\n",
                 connc->num_conn));

  }
  CONNCACHE_UNLOCK(data);

  return conn_candidate;
}

void Curl_conncache_close_all_connections(struct conncache *connc)
Changes to jni/curl/lib/connect.c.
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182




183
184
185
186
187


188
189
190




191
192
193
194


195
196


197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229


230
231
232






233
234
235
236
237
238
239

/*
 * Curl_timeleft() returns the amount of milliseconds left allowed for the
 * transfer/connection. If the value is 0, there's no timeout (ie there's
 * infinite time left). If the value is negative, the timeout time has already
 * elapsed.
 *
 * The start time is stored in progress.t_startsingle - as set with
 * Curl_pgrsTime(..., TIMER_STARTSINGLE);
 *
 * If 'nowp' is non-NULL, it points to the current time.
 * 'duringconnect' is FALSE if not during a connect, as then of course the
 * connect timeout is not taken into account!
 *
 * @unittest: 1303
 */




timediff_t Curl_timeleft(struct Curl_easy *data,
                         struct curltime *nowp,
                         bool duringconnect)
{
  int timeout_set = 0;


  timediff_t timeout_ms = duringconnect?DEFAULT_CONNECT_TIMEOUT:0;
  struct curltime now;





  /* if a timeout is set, use the most restrictive one */

  if(data->set.timeout > 0)
    timeout_set |= 1;


  if(duringconnect && (data->set.connecttimeout > 0))
    timeout_set |= 2;



  switch(timeout_set) {
  case 1:
    timeout_ms = data->set.timeout;
    break;
  case 2:
    timeout_ms = data->set.connecttimeout;
    break;
  case 3:
    if(data->set.timeout < data->set.connecttimeout)
      timeout_ms = data->set.timeout;
    else
      timeout_ms = data->set.connecttimeout;
    break;
  default:
    /* use the default */
    if(!duringconnect)
      /* if we're not during connect, there's no default timeout so if we're
         at zero we better just return zero and not make it a negative number
         by the math below */
      return 0;
    break;
  }

  if(!nowp) {
    now = Curl_now();
    nowp = &now;
  }

  /* subtract elapsed time */
  if(duringconnect)
    /* since this most recent connect started */
    timeout_ms -= Curl_timediff(*nowp, data->progress.t_startsingle);


  else
    /* since the entire operation started */
    timeout_ms -= Curl_timediff(*nowp, data->progress.t_startop);






  if(!timeout_ms)
    /* avoid returning 0 as that means no timeout! */
    return -1;

  return timeout_ms;
}








<
<
<






>
>
>
>




|
>
>
|


>
>
>
>
|

|
|
>
>
|
|
>
>
|
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
<
<






|
<
<
|
>
>
|
|
|
>
>
>
>
>
>







167
168
169
170
171
172
173



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209

210
















211


212
213
214
215
216
217
218


219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237

/*
 * Curl_timeleft() returns the amount of milliseconds left allowed for the
 * transfer/connection. If the value is 0, there's no timeout (ie there's
 * infinite time left). If the value is negative, the timeout time has already
 * elapsed.
 *



 * If 'nowp' is non-NULL, it points to the current time.
 * 'duringconnect' is FALSE if not during a connect, as then of course the
 * connect timeout is not taken into account!
 *
 * @unittest: 1303
 */

#define TIMEOUT_CONNECT 1
#define TIMEOUT_MAXTIME 2

timediff_t Curl_timeleft(struct Curl_easy *data,
                         struct curltime *nowp,
                         bool duringconnect)
{
  unsigned int timeout_set = 0;
  timediff_t connect_timeout_ms = 0;
  timediff_t maxtime_timeout_ms = 0;
  timediff_t timeout_ms = 0;
  struct curltime now;

  /* The duration of a connect and the total transfer are calculated from two
     different time-stamps. It can end up with the total timeout being reached
     before the connect timeout expires and we must acknowledge whichever
     timeout that is reached first. The total timeout is set per entire
     operation, while the connect timeout is set per connect. */

  if(data->set.timeout > 0) {
    timeout_set = TIMEOUT_MAXTIME;
    maxtime_timeout_ms = data->set.timeout;
  }
  if(duringconnect) {
    timeout_set |= TIMEOUT_CONNECT;
    connect_timeout_ms = (data->set.connecttimeout > 0) ?
      data->set.connecttimeout : DEFAULT_CONNECT_TIMEOUT;
  }
  if(!timeout_set)

    /* no timeout  */
















    return 0;



  if(!nowp) {
    now = Curl_now();
    nowp = &now;
  }

  if(timeout_set & TIMEOUT_MAXTIME) {


    maxtime_timeout_ms -= Curl_timediff(*nowp, data->progress.t_startop);
    timeout_ms = maxtime_timeout_ms;
  }

  if(timeout_set & TIMEOUT_CONNECT) {
    connect_timeout_ms -= Curl_timediff(*nowp, data->progress.t_startsingle);

    if(!(timeout_set & TIMEOUT_MAXTIME) ||
       (connect_timeout_ms < maxtime_timeout_ms))
      timeout_ms = connect_timeout_ms;
  }

  if(!timeout_ms)
    /* avoid returning 0 as that means no timeout! */
    return -1;

  return timeout_ms;
}

607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637

  return result;
}

/* Copies connection info into the transfer handle to make it available when
   the transfer handle is no longer associated with the connection. */
void Curl_persistconninfo(struct Curl_easy *data, struct connectdata *conn,
                          char *local_ip, long local_port)
{
  memcpy(data->info.conn_primary_ip, conn->primary_ip, MAX_IPADR_LEN);
  if(local_ip && local_ip[0])
    memcpy(data->info.conn_local_ip, local_ip, MAX_IPADR_LEN);
  else
    data->info.conn_local_ip[0] = 0;
  data->info.conn_scheme = conn->handler->scheme;
  data->info.conn_protocol = conn->handler->protocol;
  data->info.conn_primary_port = conn->port;
  data->info.conn_local_port = local_port;
}

/* retrieves ip address and port from a sockaddr structure.
   note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen,
                      char *addr, long *port)
{
  struct sockaddr_in *si = NULL;
#ifdef ENABLE_IPV6
  struct sockaddr_in6 *si6 = NULL;
#endif
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
  struct sockaddr_un *su = NULL;







|















|







605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635

  return result;
}

/* Copies connection info into the transfer handle to make it available when
   the transfer handle is no longer associated with the connection. */
void Curl_persistconninfo(struct Curl_easy *data, struct connectdata *conn,
                          char *local_ip, int local_port)
{
  memcpy(data->info.conn_primary_ip, conn->primary_ip, MAX_IPADR_LEN);
  if(local_ip && local_ip[0])
    memcpy(data->info.conn_local_ip, local_ip, MAX_IPADR_LEN);
  else
    data->info.conn_local_ip[0] = 0;
  data->info.conn_scheme = conn->handler->scheme;
  data->info.conn_protocol = conn->handler->protocol;
  data->info.conn_primary_port = conn->port;
  data->info.conn_local_port = local_port;
}

/* retrieves ip address and port from a sockaddr structure.
   note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen,
                      char *addr, int *port)
{
  struct sockaddr_in *si = NULL;
#ifdef ENABLE_IPV6
  struct sockaddr_in6 *si6 = NULL;
#endif
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
  struct sockaddr_un *su = NULL;
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
void Curl_conninfo_remote(struct Curl_easy *data,
                          struct connectdata *conn, curl_socket_t sockfd)
{
#ifdef HAVE_GETPEERNAME
  char buffer[STRERROR_LEN];
  struct Curl_sockaddr_storage ssrem;
  curl_socklen_t plen;
  long port;
  plen = sizeof(struct Curl_sockaddr_storage);
  memset(&ssrem, 0, sizeof(ssrem));
  if(getpeername(sockfd, (struct sockaddr*) &ssrem, &plen)) {
    int error = SOCKERRNO;
    failf(data, "getpeername() failed with errno %d: %s",
          error, Curl_strerror(error, buffer, sizeof(buffer)));
    return;







|







684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
void Curl_conninfo_remote(struct Curl_easy *data,
                          struct connectdata *conn, curl_socket_t sockfd)
{
#ifdef HAVE_GETPEERNAME
  char buffer[STRERROR_LEN];
  struct Curl_sockaddr_storage ssrem;
  curl_socklen_t plen;
  int port;
  plen = sizeof(struct Curl_sockaddr_storage);
  memset(&ssrem, 0, sizeof(ssrem));
  if(getpeername(sockfd, (struct sockaddr*) &ssrem, &plen)) {
    int error = SOCKERRNO;
    failf(data, "getpeername() failed with errno %d: %s",
          error, Curl_strerror(error, buffer, sizeof(buffer)));
    return;
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
  (void)sockfd;
#endif
}

/* retrieves the start/end point information of a socket of an established
   connection */
void Curl_conninfo_local(struct Curl_easy *data, curl_socket_t sockfd,
                         char *local_ip, long *local_port)
{
#ifdef HAVE_GETSOCKNAME
  char buffer[STRERROR_LEN];
  struct Curl_sockaddr_storage ssloc;
  curl_socklen_t slen;
  slen = sizeof(struct Curl_sockaddr_storage);
  memset(&ssloc, 0, sizeof(ssloc));







|







709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
  (void)sockfd;
#endif
}

/* retrieves the start/end point information of a socket of an established
   connection */
void Curl_conninfo_local(struct Curl_easy *data, curl_socket_t sockfd,
                         char *local_ip, int *local_port)
{
#ifdef HAVE_GETSOCKNAME
  char buffer[STRERROR_LEN];
  struct Curl_sockaddr_storage ssloc;
  curl_socklen_t slen;
  slen = sizeof(struct Curl_sockaddr_storage);
  memset(&ssloc, 0, sizeof(ssloc));
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
void Curl_updateconninfo(struct Curl_easy *data, struct connectdata *conn,
                         curl_socket_t sockfd)
{
  /* 'local_ip' and 'local_port' get filled with local's numerical
     ip address and port number whenever an outgoing connection is
     **established** from the primary socket to a remote address. */
  char local_ip[MAX_IPADR_LEN] = "";
  long local_port = -1;

  if(conn->transport == TRNSPRT_TCP) {
    if(!conn->bits.reuse && !conn->bits.tcp_fastopen) {
      Curl_conninfo_remote(data, conn, sockfd);
      Curl_conninfo_local(data, sockfd, local_ip, &local_port);
    }
  } /* end of TCP-only section */







|







746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
void Curl_updateconninfo(struct Curl_easy *data, struct connectdata *conn,
                         curl_socket_t sockfd)
{
  /* 'local_ip' and 'local_port' get filled with local's numerical
     ip address and port number whenever an outgoing connection is
     **established** from the primary socket to a remote address. */
  char local_ip[MAX_IPADR_LEN] = "";
  int local_port = -1;

  if(conn->transport == TRNSPRT_TCP) {
    if(!conn->bits.reuse && !conn->bits.tcp_fastopen) {
      Curl_conninfo_remote(data, conn, sockfd);
      Curl_conninfo_local(data, sockfd, local_ip, &local_port);
    }
  } /* end of TCP-only section */
904
905
906
907
908
909
910
911

912

913
914
915
916
917
918
919
        conn->sock[sockindex] = conn->tempsock[i];
        conn->ip_addr = conn->tempaddr[i];
        conn->tempsock[i] = CURL_SOCKET_BAD;
        post_SOCKS(data, conn, sockindex, connected);
        connkeep(conn, "HTTP/3 default");
        return CURLE_OK;
      }
      if(result)

        error = SOCKERRNO;

    }
    else
#endif
    {
#ifdef mpeix
      /* Call this function once now, and ignore the results. We do this to
         "clear" the error state on the socket so that we can later read it







|
>

>







902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
        conn->sock[sockindex] = conn->tempsock[i];
        conn->ip_addr = conn->tempaddr[i];
        conn->tempsock[i] = CURL_SOCKET_BAD;
        post_SOCKS(data, conn, sockindex, connected);
        connkeep(conn, "HTTP/3 default");
        return CURLE_OK;
      }
      if(result) {
        conn->tempsock[i] = CURL_SOCKET_BAD;
        error = SOCKERRNO;
      }
    }
    else
#endif
    {
#ifdef mpeix
      /* Call this function once now, and ignore the results. We do this to
         "clear" the error state on the socket so that we can later read it
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
  struct Curl_sockaddr_ex addr;
  int rc = -1;
  int error = 0;
  bool isconnected = FALSE;
  curl_socket_t sockfd;
  CURLcode result;
  char ipaddress[MAX_IPADR_LEN];
  long port;
  bool is_tcp;
#ifdef TCP_FASTOPEN_CONNECT
  int optval = 1;
#endif
  char buffer[STRERROR_LEN];
  curl_socket_t *sockp = &conn->tempsock[tempindex];
  *sockp = CURL_SOCKET_BAD;







|







1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
  struct Curl_sockaddr_ex addr;
  int rc = -1;
  int error = 0;
  bool isconnected = FALSE;
  curl_socket_t sockfd;
  CURLcode result;
  char ipaddress[MAX_IPADR_LEN];
  int port;
  bool is_tcp;
#ifdef TCP_FASTOPEN_CONNECT
  int optval = 1;
#endif
  char buffer[STRERROR_LEN];
  curl_socket_t *sockp = &conn->tempsock[tempindex];
  *sockp = CURL_SOCKET_BAD;
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
                       ipaddress, &port)) {
    /* malformed address or bug in inet_ntop, try next address */
    failf(data, "sa_addr inet_ntop() failed with errno %d: %s",
          errno, Curl_strerror(errno, buffer, sizeof(buffer)));
    Curl_closesocket(data, conn, sockfd);
    return CURLE_OK;
  }
  infof(data, "  Trying %s:%ld...\n", ipaddress, port);

#ifdef ENABLE_IPV6
  is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) &&
    addr.socktype == SOCK_STREAM;
#else
  is_tcp = (addr.family == AF_INET) && addr.socktype == SOCK_STREAM;
#endif







|







1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
                       ipaddress, &port)) {
    /* malformed address or bug in inet_ntop, try next address */
    failf(data, "sa_addr inet_ntop() failed with errno %d: %s",
          errno, Curl_strerror(errno, buffer, sizeof(buffer)));
    Curl_closesocket(data, conn, sockfd);
    return CURLE_OK;
  }
  infof(data, "  Trying %s:%d...\n", ipaddress, port);

#ifdef ENABLE_IPV6
  is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) &&
    addr.socktype == SOCK_STREAM;
#else
  is_tcp = (addr.family == AF_INET) && addr.socktype == SOCK_STREAM;
#endif
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462

    if(!find.found) {
      data->state.lastconnect_id = -1;
      return CURL_SOCKET_BAD;
    }

    c = find.found;
    if(connp) {
      /* only store this if the caller cares for it */
      *connp = c;
      c->data = data;
    }
    return c->sock[FIRSTSOCKET];
  }
  return CURL_SOCKET_BAD;
}

/*
 * Check if a connection seems to be alive.







|


<
<







1444
1445
1446
1447
1448
1449
1450
1451
1452
1453


1454
1455
1456
1457
1458
1459
1460

    if(!find.found) {
      data->state.lastconnect_id = -1;
      return CURL_SOCKET_BAD;
    }

    c = find.found;
    if(connp)
      /* only store this if the caller cares for it */
      *connp = c;


    return c->sock[FIRSTSOCKET];
  }
  return CURL_SOCKET_BAD;
}

/*
 * Check if a connection seems to be alive.
Changes to jni/curl/lib/connect.h.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 *
 * The returned socket will be CURL_SOCKET_BAD in case of failure!
 */
curl_socket_t Curl_getconnectinfo(struct Curl_easy *data,
                                  struct connectdata **connp);

bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen,
                      char *addr, long *port);

/*
 * Check if a connection seems to be alive.
 */
bool Curl_connalive(struct connectdata *conn);

#ifdef USE_WINSOCK







|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 *
 * The returned socket will be CURL_SOCKET_BAD in case of failure!
 */
curl_socket_t Curl_getconnectinfo(struct Curl_easy *data,
                                  struct connectdata **connp);

bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen,
                      char *addr, int *port);

/*
 * Check if a connection seems to be alive.
 */
bool Curl_connalive(struct connectdata *conn);

#ifdef USE_WINSOCK
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#endif

void Curl_updateconninfo(struct Curl_easy *data, struct connectdata *conn,
                         curl_socket_t sockfd);
void Curl_conninfo_remote(struct Curl_easy *data, struct connectdata *conn,
                          curl_socket_t sockfd);
void Curl_conninfo_local(struct Curl_easy *data, curl_socket_t sockfd,
                         char *local_ip, long *local_port);
void Curl_persistconninfo(struct Curl_easy *data, struct connectdata *conn,
                          char *local_ip, long local_port);
int Curl_closesocket(struct Curl_easy *data, struct connectdata *conn,
                     curl_socket_t sock);

/*
 * The Curl_sockaddr_ex structure is basically libcurl's external API
 * curl_sockaddr structure with enough space available to directly hold any
 * protocol-specific address structures. The variable declared here will be







|

|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#endif

void Curl_updateconninfo(struct Curl_easy *data, struct connectdata *conn,
                         curl_socket_t sockfd);
void Curl_conninfo_remote(struct Curl_easy *data, struct connectdata *conn,
                          curl_socket_t sockfd);
void Curl_conninfo_local(struct Curl_easy *data, curl_socket_t sockfd,
                         char *local_ip, int *local_port);
void Curl_persistconninfo(struct Curl_easy *data, struct connectdata *conn,
                          char *local_ip, int local_port);
int Curl_closesocket(struct Curl_easy *data, struct connectdata *conn,
                     curl_socket_t sock);

/*
 * The Curl_sockaddr_ex structure is basically libcurl's external API
 * curl_sockaddr structure with enough space available to directly hold any
 * protocol-specific address structures. The variable declared here will be
Changes to jni/curl/lib/cookie.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
/*
 * Load cookies from all given cookie files (CURLOPT_COOKIEFILE).
 *
 * NOTE: OOM or cookie parsing failures are ignored.
 */
void Curl_cookie_loadfiles(struct Curl_easy *data)
{
  struct curl_slist *list = data->change.cookielist;
  if(list) {
    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
    while(list) {
      struct CookieInfo *newcookies = Curl_cookie_init(data,
                                        list->data,
                                        data->cookies,
                                        data->set.cookiesession);
      if(!newcookies)
        /* Failure may be due to OOM or a bad cookie; both are ignored
         * but only the first should be
         */
        infof(data, "ignoring failed cookie_init for %s\n", list->data);
      else
        data->cookies = newcookies;
      list = list->next;
    }
    curl_slist_free_all(data->change.cookielist); /* clean up list */
    data->change.cookielist = NULL; /* don't do this again! */
    Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
  }
}

/*
 * strstore() makes a strdup() on the 'newstr' and if '*str' is non-NULL
 * that will be freed before the allocated string is stored there.







|
















|
|







344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
/*
 * Load cookies from all given cookie files (CURLOPT_COOKIEFILE).
 *
 * NOTE: OOM or cookie parsing failures are ignored.
 */
void Curl_cookie_loadfiles(struct Curl_easy *data)
{
  struct curl_slist *list = data->state.cookielist;
  if(list) {
    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
    while(list) {
      struct CookieInfo *newcookies = Curl_cookie_init(data,
                                        list->data,
                                        data->cookies,
                                        data->set.cookiesession);
      if(!newcookies)
        /* Failure may be due to OOM or a bad cookie; both are ignored
         * but only the first should be
         */
        infof(data, "ignoring failed cookie_init for %s\n", list->data);
      else
        data->cookies = newcookies;
      list = list->next;
    }
    curl_slist_free_all(data->state.cookielist); /* clean up list */
    data->state.cookielist = NULL; /* don't do this again! */
    Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
  }
}

/*
 * strstore() makes a strdup() on the 'newstr' and if '*str' is non-NULL
 * that will be freed before the allocated string is stored there.
947
948
949
950
951
952
953

954



955
956
957
958
959
960
961
962
     the same domain and path as this */

  /* at first, remove expired cookies */
  if(!noexpire)
    remove_expired(c);

#ifdef USE_LIBPSL

  /* Check if the domain is a Public Suffix and if yes, ignore the cookie. */



  if(domain && co->domain && !isip(co->domain)) {
    const psl_ctx_t *psl = Curl_psl_use(data);
    int acceptable;

    if(psl) {
      acceptable = psl_is_cookie_domain_acceptable(psl, domain, co->domain);
      Curl_psl_release(data);
    }







>
|
>
>
>
|







947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
     the same domain and path as this */

  /* at first, remove expired cookies */
  if(!noexpire)
    remove_expired(c);

#ifdef USE_LIBPSL
  /*
   * Check if the domain is a Public Suffix and if yes, ignore the cookie. We
   * must also check that the data handle isn't NULL since the psl code will
   * dereference it.
   */
  if(data && (domain && co->domain && !isip(co->domain))) {
    const psl_ctx_t *psl = Curl_psl_use(data);
    int acceptable;

    if(psl) {
      acceptable = psl_is_cookie_domain_acceptable(psl, domain, co->domain);
      Curl_psl_release(data);
    }
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
  return list;
}

void Curl_flush_cookies(struct Curl_easy *data, bool cleanup)
{
  if(data->set.str[STRING_COOKIEJAR]) {
    if(data->change.cookielist) {
      /* If there is a list of cookie files to read, do it first so that
         we have all the told files read before we write the new jar.
         Curl_cookie_loadfiles() LOCKS and UNLOCKS the share itself! */
      Curl_cookie_loadfiles(data);
    }

    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);

    /* if we have a destination file for all the cookies to get dumped to */
    if(cookie_output(data, data->cookies, data->set.str[STRING_COOKIEJAR]))
      infof(data, "WARNING: failed to save cookies in %s\n",
            data->set.str[STRING_COOKIEJAR]);
  }
  else {
    if(cleanup && data->change.cookielist) {
      /* since nothing is written, we can just free the list of cookie file
         names */
      curl_slist_free_all(data->change.cookielist); /* clean up list */
      data->change.cookielist = NULL;
    }
    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
  }

  if(cleanup && (!data->share || (data->cookies != data->share->cookies))) {
    Curl_cookie_cleanup(data->cookies);
    data->cookies = NULL;
  }
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
}

#endif /* CURL_DISABLE_HTTP || CURL_DISABLE_COOKIES */







|














|


|
|












1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
  return list;
}

void Curl_flush_cookies(struct Curl_easy *data, bool cleanup)
{
  if(data->set.str[STRING_COOKIEJAR]) {
    if(data->state.cookielist) {
      /* If there is a list of cookie files to read, do it first so that
         we have all the told files read before we write the new jar.
         Curl_cookie_loadfiles() LOCKS and UNLOCKS the share itself! */
      Curl_cookie_loadfiles(data);
    }

    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);

    /* if we have a destination file for all the cookies to get dumped to */
    if(cookie_output(data, data->cookies, data->set.str[STRING_COOKIEJAR]))
      infof(data, "WARNING: failed to save cookies in %s\n",
            data->set.str[STRING_COOKIEJAR]);
  }
  else {
    if(cleanup && data->state.cookielist) {
      /* since nothing is written, we can just free the list of cookie file
         names */
      curl_slist_free_all(data->state.cookielist); /* clean up list */
      data->state.cookielist = NULL;
    }
    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
  }

  if(cleanup && (!data->share || (data->cookies != data->share->cookies))) {
    Curl_cookie_cleanup(data->cookies);
    data->cookies = NULL;
  }
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
}

#endif /* CURL_DISABLE_HTTP || CURL_DISABLE_COOKIES */
Changes to jni/curl/lib/cookie.h.
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

116
117
118
119
120
struct Curl_easy;
/*
 * Add a cookie to the internal list of cookies. The domain and path arguments
 * are only used if the header boolean is TRUE.
 */

struct Cookie *Curl_cookie_add(struct Curl_easy *data,
                               struct CookieInfo *, bool header, bool noexpiry,
                               char *lineptr,
                               const char *domain, const char *path,
                               bool secure);

struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *,
                                   const char *, bool);
void Curl_cookie_freelist(struct Cookie *cookies);
void Curl_cookie_clearall(struct CookieInfo *cookies);
void Curl_cookie_clearsess(struct CookieInfo *cookies);

#if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES)
#define Curl_cookie_list(x) NULL
#define Curl_cookie_loadfiles(x) Curl_nop_stmt
#define Curl_cookie_init(x,y,z,w) NULL
#define Curl_cookie_cleanup(x) Curl_nop_stmt
#define Curl_flush_cookies(x,y) Curl_nop_stmt
#else
void Curl_flush_cookies(struct Curl_easy *data, bool cleanup);
void Curl_cookie_cleanup(struct CookieInfo *);
struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
                                    const char *, struct CookieInfo *, bool);

struct curl_slist *Curl_cookie_list(struct Curl_easy *data);
void Curl_cookie_loadfiles(struct Curl_easy *data);
#endif

#endif /* HEADER_CURL_COOKIE_H */







|
|



|
|












|

|
>





87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
struct Curl_easy;
/*
 * Add a cookie to the internal list of cookies. The domain and path arguments
 * are only used if the header boolean is TRUE.
 */

struct Cookie *Curl_cookie_add(struct Curl_easy *data,
                               struct CookieInfo *c, bool header,
                               bool noexpiry, char *lineptr,
                               const char *domain, const char *path,
                               bool secure);

struct Cookie *Curl_cookie_getlist(struct CookieInfo *c, const char *host,
                                   const char *path, bool secure);
void Curl_cookie_freelist(struct Cookie *cookies);
void Curl_cookie_clearall(struct CookieInfo *cookies);
void Curl_cookie_clearsess(struct CookieInfo *cookies);

#if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES)
#define Curl_cookie_list(x) NULL
#define Curl_cookie_loadfiles(x) Curl_nop_stmt
#define Curl_cookie_init(x,y,z,w) NULL
#define Curl_cookie_cleanup(x) Curl_nop_stmt
#define Curl_flush_cookies(x,y) Curl_nop_stmt
#else
void Curl_flush_cookies(struct Curl_easy *data, bool cleanup);
void Curl_cookie_cleanup(struct CookieInfo *c);
struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
                                    const char *file, struct CookieInfo *inc,
                                    bool newsession);
struct curl_slist *Curl_cookie_list(struct Curl_easy *data);
void Curl_cookie_loadfiles(struct Curl_easy *data);
#endif

#endif /* HEADER_CURL_COOKIE_H */
Changes to jni/curl/lib/curl_config.h.cmake.
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#cmakedefine CURL_EXTERN_SYMBOL ${CURL_EXTERN_SYMBOL}
/* Ensure using CURL_EXTERN_SYMBOL is possible */
#ifndef CURL_EXTERN_SYMBOL
#define CURL_EXTERN_SYMBOL
#endif

/* Allow SMB to work on Windows */
#cmakedefine USE_WIN32_CRYPTO

/* Use Windows LDAP implementation */
#cmakedefine USE_WIN32_LDAP 1

/* when not building a shared library */
#cmakedefine CURL_STATICLIB 1








|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#cmakedefine CURL_EXTERN_SYMBOL ${CURL_EXTERN_SYMBOL}
/* Ensure using CURL_EXTERN_SYMBOL is possible */
#ifndef CURL_EXTERN_SYMBOL
#define CURL_EXTERN_SYMBOL
#endif

/* Allow SMB to work on Windows */
#cmakedefine USE_WIN32_CRYPTO 1

/* Use Windows LDAP implementation */
#cmakedefine USE_WIN32_LDAP 1

/* when not building a shared library */
#cmakedefine CURL_STATICLIB 1

655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671

/* Define to 1 if you have the strlcat function. */
#cmakedefine HAVE_STRLCAT 1

/* Define to 1 if you have the `strlcpy' function. */
#cmakedefine HAVE_STRLCPY 1

/* Define to 1 if you have the strncasecmp function. */
#cmakedefine HAVE_STRNCASECMP 1

/* Define to 1 if you have the strncmpi function. */
#cmakedefine HAVE_STRNCMPI 1

/* Define to 1 if you have the strnicmp function. */
#cmakedefine HAVE_STRNICMP 1

/* Define to 1 if you have the <stropts.h> header file. */







<
<
<







655
656
657
658
659
660
661



662
663
664
665
666
667
668

/* Define to 1 if you have the strlcat function. */
#cmakedefine HAVE_STRLCAT 1

/* Define to 1 if you have the `strlcpy' function. */
#cmakedefine HAVE_STRLCPY 1




/* Define to 1 if you have the strncmpi function. */
#cmakedefine HAVE_STRNCMPI 1

/* Define to 1 if you have the strnicmp function. */
#cmakedefine HAVE_STRNICMP 1

/* Define to 1 if you have the <stropts.h> header file. */
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975

/* Define if you want to enable POSIX threaded DNS lookup */
#cmakedefine USE_THREADS_POSIX 1

/* Define if you want to enable WIN32 threaded DNS lookup */
#cmakedefine USE_THREADS_WIN32 1

/* Define to disable non-blocking sockets. */
#cmakedefine USE_BLOCKING_SOCKETS 1

/* if GnuTLS is enabled */
#cmakedefine USE_GNUTLS 1

/* if Secure Transport is enabled */
#cmakedefine USE_SECTRANSP 1

/* if mbedTLS is enabled */







<
<
<







956
957
958
959
960
961
962



963
964
965
966
967
968
969

/* Define if you want to enable POSIX threaded DNS lookup */
#cmakedefine USE_THREADS_POSIX 1

/* Define if you want to enable WIN32 threaded DNS lookup */
#cmakedefine USE_THREADS_WIN32 1




/* if GnuTLS is enabled */
#cmakedefine USE_GNUTLS 1

/* if Secure Transport is enabled */
#cmakedefine USE_SECTRANSP 1

/* if mbedTLS is enabled */
1075
1076
1077
1078
1079
1080
1081






#cmakedefine size_t ${size_t}

/* the signed version of size_t */
#cmakedefine ssize_t ${ssize_t}

/* Define to 1 if you have the mach_absolute_time function. */
#cmakedefine HAVE_MACH_ABSOLUTE_TIME 1













>
>
>
>
>
>
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
#cmakedefine size_t ${size_t}

/* the signed version of size_t */
#cmakedefine ssize_t ${ssize_t}

/* Define to 1 if you have the mach_absolute_time function. */
#cmakedefine HAVE_MACH_ABSOLUTE_TIME 1

/* to enable Windows IDN */
#cmakedefine USE_WIN32_IDN 1

/* to make the compiler know the prototypes of Windows IDN APIs */
#cmakedefine WANT_IDN_PROTOTYPES 1
Changes to jni/curl/lib/curl_config.h.in.
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define to 1 if you have the strncasecmp function. */
#undef HAVE_STRNCASECMP

/* Define to 1 if you have the strncmpi function. */
#undef HAVE_STRNCMPI

/* Define to 1 if you have the strnicmp function. */
#undef HAVE_STRNICMP

/* Define to 1 if you have the <stropts.h> header file. */







<
<
<







677
678
679
680
681
682
683



684
685
686
687
688
689
690

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H




/* Define to 1 if you have the strncmpi function. */
#undef HAVE_STRNCMPI

/* Define to 1 if you have the strnicmp function. */
#undef HAVE_STRNICMP

/* Define to 1 if you have the <stropts.h> header file. */
790
791
792
793
794
795
796



797
798
799
800
801
802
803
#undef HAVE_VARIADIC_MACROS_C99

/* Define to 1 if compiler supports old gcc variadic macro style. */
#undef HAVE_VARIADIC_MACROS_GCC

/* Define to 1 if you have the winber.h header file. */
#undef HAVE_WINBER_H




/* Define to 1 if you have the windows.h header file. */
#undef HAVE_WINDOWS_H

/* Define to 1 if you have the winldap.h header file. */
#undef HAVE_WINLDAP_H








>
>
>







787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
#undef HAVE_VARIADIC_MACROS_C99

/* Define to 1 if compiler supports old gcc variadic macro style. */
#undef HAVE_VARIADIC_MACROS_GCC

/* Define to 1 if you have the winber.h header file. */
#undef HAVE_WINBER_H

/* Define to 1 if you have the wincrypt.h header file. */
#undef HAVE_WINCRYPT_H

/* Define to 1 if you have the windows.h header file. */
#undef HAVE_WINDOWS_H

/* Define to 1 if you have the winldap.h header file. */
#undef HAVE_WINLDAP_H

905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921

/* Define to the type of arg 4 for recv. */
#undef RECV_TYPE_ARG4

/* Define to the function return type for recv. */
#undef RECV_TYPE_RETV

/* Define as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE

/* Define to the type qualifier of arg 5 for select. */
#undef SELECT_QUAL_ARG5

/* Define to the type of arg 1 for select. */
#undef SELECT_TYPE_ARG1

/* Define to the type of args 2, 3 and 4 for select. */







<
<
<







905
906
907
908
909
910
911



912
913
914
915
916
917
918

/* Define to the type of arg 4 for recv. */
#undef RECV_TYPE_ARG4

/* Define to the function return type for recv. */
#undef RECV_TYPE_RETV




/* Define to the type qualifier of arg 5 for select. */
#undef SELECT_QUAL_ARG5

/* Define to the type of arg 1 for select. */
#undef SELECT_TYPE_ARG1

/* Define to the type of args 2, 3 and 4 for select. */
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* Define to the type of arg 3 for strerror_r. */
#undef STRERROR_R_TYPE_ARG3

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME

/* if AmiSSL is in use */
#undef USE_AMISSL

/* Define to enable c-ares support */
#undef USE_ARES

/* if BearSSL is enabled */
#undef USE_BEARSSL

/* if ECH support is available */
#undef USE_ECH

/* if GnuTLS is enabled */
#undef USE_GNUTLS

/* if GnuTLS uses nettle as crypto backend */
#undef USE_GNUTLS_NETTLE

/* to enable HSTS */
#undef USE_HSTS

/* if hyper is in use */
#undef USE_HYPER








<
<
<















|
|







968
969
970
971
972
973
974



975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* Define to the type of arg 3 for strerror_r. */
#undef STRERROR_R_TYPE_ARG3




/* if AmiSSL is in use */
#undef USE_AMISSL

/* Define to enable c-ares support */
#undef USE_ARES

/* if BearSSL is enabled */
#undef USE_BEARSSL

/* if ECH support is available */
#undef USE_ECH

/* if GnuTLS is enabled */
#undef USE_GNUTLS

/* GSASL support enabled */
#undef USE_GSASL

/* to enable HSTS */
#undef USE_HSTS

/* if hyper is in use */
#undef USE_HYPER

1048
1049
1050
1051
1052
1053
1054



1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072




1073
1074
1075
1076
1077
1078
1079
#undef USE_OPENLDAP

/* if OpenSSL is in use */
#undef USE_OPENSSL

/* if quiche is in use */
#undef USE_QUICHE




/* to enable Windows native SSL/TLS support */
#undef USE_SCHANNEL

/* enable Secure Transport */
#undef USE_SECTRANSP

/* if you want POSIX threaded DNS lookup */
#undef USE_THREADS_POSIX

/* if you want Win32 threaded DNS lookup */
#undef USE_THREADS_WIN32

/* Use TLS-SRP authentication */
#undef USE_TLS_SRP

/* Use Unix domain sockets */
#undef USE_UNIX_SOCKETS





/* Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz). */
#undef USE_WIN32_IDN

/* Define to 1 if you are building a Windows target with large file support.
   */
#undef USE_WIN32_LARGE_FILES







>
>
>


















>
>
>
>







1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
#undef USE_OPENLDAP

/* if OpenSSL is in use */
#undef USE_OPENSSL

/* if quiche is in use */
#undef USE_QUICHE

/* if rustls is enabled */
#undef USE_RUSTLS

/* to enable Windows native SSL/TLS support */
#undef USE_SCHANNEL

/* enable Secure Transport */
#undef USE_SECTRANSP

/* if you want POSIX threaded DNS lookup */
#undef USE_THREADS_POSIX

/* if you want Win32 threaded DNS lookup */
#undef USE_THREADS_WIN32

/* Use TLS-SRP authentication */
#undef USE_TLS_SRP

/* Use Unix domain sockets */
#undef USE_UNIX_SOCKETS

/* Define to 1 if you are building a Windows target with crypto API support.
   */
#undef USE_WIN32_CRYPTO

/* Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz). */
#undef USE_WIN32_IDN

/* Define to 1 if you are building a Windows target with large file support.
   */
#undef USE_WIN32_LARGE_FILES
Changes to jni/curl/lib/curl_endian.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 */
unsigned short Curl_read16_be(const unsigned char *buf)
{
  return (unsigned short)(((unsigned short)buf[0] << 8) |
                          ((unsigned short)buf[1]));
}

#if (CURL_SIZEOF_CURL_OFF_T > 4)
/*
 * write32_le()
 *
 * This function converts a 32-bit integer from the native endian format,
 * to little endian format ready for sending down the wire.
 *
 * Parameters:







|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 */
unsigned short Curl_read16_be(const unsigned char *buf)
{
  return (unsigned short)(((unsigned short)buf[0] << 8) |
                          ((unsigned short)buf[1]));
}

#if (SIZEOF_CURL_OFF_T > 4)
/*
 * write32_le()
 *
 * This function converts a 32-bit integer from the native endian format,
 * to little endian format ready for sending down the wire.
 *
 * Parameters:
117
118
119
120
121
122
123
124
#else
void Curl_write64_le(const __int64 value, unsigned char *buffer)
#endif
{
  write32_le((int)value, buffer);
  write32_le((int)(value >> 32), buffer + 4);
}
#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */







|
117
118
119
120
121
122
123
124
#else
void Curl_write64_le(const __int64 value, unsigned char *buffer)
#endif
{
  write32_le((int)value, buffer);
  write32_le((int)(value >> 32), buffer + 4);
}
#endif /* SIZEOF_CURL_OFF_T > 4 */
Changes to jni/curl/lib/curl_endian.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_ENDIAN_H
#define HEADER_CURL_ENDIAN_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_ENDIAN_H
#define HEADER_CURL_ENDIAN_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

/* Converts a 32-bit integer from little endian */
unsigned int Curl_read32_le(const unsigned char *buf);

/* Converts a 16-bit integer from big endian */
unsigned short Curl_read16_be(const unsigned char *buf);

#if (CURL_SIZEOF_CURL_OFF_T > 4)
/* Converts a 64-bit integer to little endian */
#if defined(HAVE_LONGLONG)
void Curl_write64_le(const long long value, unsigned char *buffer);
#else
void Curl_write64_le(const __int64 value, unsigned char *buffer);
#endif
#endif

#endif /* HEADER_CURL_ENDIAN_H */







|









27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

/* Converts a 32-bit integer from little endian */
unsigned int Curl_read32_le(const unsigned char *buf);

/* Converts a 16-bit integer from big endian */
unsigned short Curl_read16_be(const unsigned char *buf);

#if (SIZEOF_CURL_OFF_T > 4)
/* Converts a 64-bit integer to little endian */
#if defined(HAVE_LONGLONG)
void Curl_write64_le(const long long value, unsigned char *buffer);
#else
void Curl_write64_le(const __int64 value, unsigned char *buffer);
#endif
#endif

#endif /* HEADER_CURL_ENDIAN_H */
Changes to jni/curl/lib/curl_multibyte.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24




25
26
27
28
29
30
31
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

/*
 * This file is 'mem-include-scan' clean. See test 1132.




 */

#include "curl_setup.h"

#if defined(WIN32)

#include "curl_multibyte.h"







|















|
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

/*
 * This file is 'mem-include-scan' clean, which means memdebug.h and
 * curl_memory.h are purposely not included in this file. See test 1132.
 *
 * The functions in this file are curlx functions which are not tracked by the
 * curl memory tracker memdebug.
 */

#include "curl_setup.h"

#if defined(WIN32)

#include "curl_multibyte.h"
77
78
79
80
81
82
83


























84
85
86
87
88
89
90

  return str_utf8;
}

#endif /* WIN32 */

#if defined(USE_WIN32_LARGE_FILES) || defined(USE_WIN32_SMALL_FILES)



























FILE *curlx_win32_fopen(const char *filename, const char *mode)
{
#ifdef _UNICODE
  FILE *result = NULL;
  wchar_t *filename_w = curlx_convert_UTF8_to_wchar(filename);
  wchar_t *mode_w = curlx_convert_UTF8_to_wchar(mode);







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

  return str_utf8;
}

#endif /* WIN32 */

#if defined(USE_WIN32_LARGE_FILES) || defined(USE_WIN32_SMALL_FILES)

int curlx_win32_open(const char *filename, int oflag, ...)
{
  int pmode = 0;

#ifdef _UNICODE
  int result = -1;
  wchar_t *filename_w = curlx_convert_UTF8_to_wchar(filename);
#endif

  va_list param;
  va_start(param, oflag);
  if(oflag & O_CREAT)
    pmode = va_arg(param, int);
  va_end(param);

#ifdef _UNICODE
  if(filename_w)
    result = _wopen(filename_w, oflag, pmode);
  free(filename_w);
  if(result != -1)
    return result;
#endif

  return (_open)(filename, oflag, pmode);
}

FILE *curlx_win32_fopen(const char *filename, const char *mode)
{
#ifdef _UNICODE
  FILE *result = NULL;
  wchar_t *filename_w = curlx_convert_UTF8_to_wchar(filename);
  wchar_t *mode_w = curlx_convert_UTF8_to_wchar(mode);
100
101
102
103
104
105
106
107
108
109
110
111
112
113

114
115
116
117
118
119
120

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

149

150
151
152
153
}

int curlx_win32_stat(const char *path, struct_stat *buffer)
{
  int result = -1;
#ifdef _UNICODE
  wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);
#endif /* _UNICODE */

#if defined(USE_WIN32_SMALL_FILES)
#if defined(_UNICODE)
  if(path_w)
    result = _wstat(path_w, buffer);
  else

#endif /* _UNICODE */
    result = _stat(path, buffer);
#else /* USE_WIN32_SMALL_FILES */
#if defined(_UNICODE)
  if(path_w)
    result = _wstati64(path_w, buffer);
  else

#endif /* _UNICODE */
    result = _stati64(path, buffer);
#endif /* USE_WIN32_SMALL_FILES */

#ifdef _UNICODE
  free(path_w);
#endif

  return result;
}

int curlx_win32_access(const char *path, int mode)
{
    int result = -1;
#ifdef _UNICODE
    wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);
#endif /* _UNICODE */

#if defined(_UNICODE)
    if(path_w)
        result = _waccess(path_w, mode);
    else
#endif /* _UNICODE */
        result = _access(path, mode);

#ifdef _UNICODE
    free(path_w);
#endif



    return result;
}

#endif /* USE_WIN32_LARGE_FILES || USE_WIN32_SMALL_FILES */







<
|

<
<

|
>
|
<
<
<
|
|
|
>

|
|
|
|
|

<





<
|
|
<
<
<
|
|
<
<
<
<
<

|
>
|
>
|



130
131
132
133
134
135
136

137
138


139
140
141
142



143
144
145
146
147
148
149
150
151
152
153

154
155
156
157
158

159
160



161
162





163
164
165
166
167
168
169
170
171
}

int curlx_win32_stat(const char *path, struct_stat *buffer)
{
  int result = -1;
#ifdef _UNICODE
  wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);

  if(path_w) {
#if defined(USE_WIN32_SMALL_FILES)


    result = _wstat(path_w, buffer);
#else
    result = _wstati64(path_w, buffer);
#endif



    free(path_w);
    if(result != -1)
      return result;
  }
#endif /* _UNICODE */

#if defined(USE_WIN32_SMALL_FILES)
  result = _stat(path, buffer);
#else
  result = _stati64(path, buffer);
#endif

  return result;
}

int curlx_win32_access(const char *path, int mode)
{

#if defined(_UNICODE)
  wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);



  if(path_w) {
    int result = _waccess(path_w, mode);





    free(path_w);
    if(result != -1)
      return result;
  }
#endif /* _UNICODE */
  return _access(path, mode);
}

#endif /* USE_WIN32_LARGE_FILES || USE_WIN32_SMALL_FILES */
Changes to jni/curl/lib/curl_multibyte.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MULTIBYTE_H
#define HEADER_CURL_MULTIBYTE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MULTIBYTE_H
#define HEADER_CURL_MULTIBYTE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

47
48
49
50
51
52

53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89








90

 /*
  * MultiByte conversions using Windows kernel32 library.
  */

wchar_t *curlx_convert_UTF8_to_wchar(const char *str_utf8);
char *curlx_convert_wchar_to_UTF8(const wchar_t *str_w);

#endif /* WIN32 */

/*
 * Macros curlx_convert_UTF8_to_tchar(), curlx_convert_tchar_to_UTF8()
 * and curlx_unicodefree() main purpose is to minimize the number of
 * preprocessor conditional directives needed by code using these
 * to differentiate UNICODE from non-UNICODE builds.
 *
 * When building with UNICODE defined, these two macros
 * curlx_convert_UTF8_to_tchar() and curlx_convert_tchar_to_UTF8()
 * return a pointer to a newly allocated memory area holding result.
 * When the result is no longer needed, allocated memory is intended

 * to be free'ed with curlx_unicodefree().
 *
 * When building without UNICODE defined, this macros
 * curlx_convert_UTF8_to_tchar() and curlx_convert_tchar_to_UTF8()
 * return the pointer received as argument. curlx_unicodefree() does
 * no actual free'ing of this pointer it is simply set to NULL.

 */

#if defined(UNICODE) && defined(WIN32)

#define curlx_convert_UTF8_to_tchar(ptr) curlx_convert_UTF8_to_wchar((ptr))
#define curlx_convert_tchar_to_UTF8(ptr) curlx_convert_wchar_to_UTF8((ptr))
#define curlx_unicodefree(ptr)                          \
  do {                                                  \
    if(ptr) {                                           \
      (free)(ptr);                                        \
      (ptr) = NULL;                                     \
    }                                                   \
  } while(0)

typedef union {
  unsigned short       *tchar_ptr;
  const unsigned short *const_tchar_ptr;
  unsigned short       *tbyte_ptr;
  const unsigned short *const_tbyte_ptr;
} xcharp_u;

#else

#define curlx_convert_UTF8_to_tchar(ptr) (ptr)
#define curlx_convert_tchar_to_UTF8(ptr) (ptr)
#define curlx_unicodefree(ptr) \
  do {(ptr) = NULL;} while(0)

typedef union {
  char                *tchar_ptr;
  const char          *const_tchar_ptr;
  unsigned char       *tbyte_ptr;
  const unsigned char *const_tbyte_ptr;
} xcharp_u;

#endif /* UNICODE && WIN32 */









#endif /* HEADER_CURL_MULTIBYTE_H */







<








|
|
|
|
>
|

<
|
|
|
>






<
<
<
<
<
<
<










|
|
<
<










>
>
>
>
>
>
>
>

27
28
29
30
31
32
33

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
56
57
58







59
60
61
62
63
64
65
66
67
68
69
70


71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

 /*
  * MultiByte conversions using Windows kernel32 library.
  */

wchar_t *curlx_convert_UTF8_to_wchar(const char *str_utf8);
char *curlx_convert_wchar_to_UTF8(const wchar_t *str_w);

#endif /* WIN32 */

/*
 * Macros curlx_convert_UTF8_to_tchar(), curlx_convert_tchar_to_UTF8()
 * and curlx_unicodefree() main purpose is to minimize the number of
 * preprocessor conditional directives needed by code using these
 * to differentiate UNICODE from non-UNICODE builds.
 *
 * In the case of a non-UNICODE build the tchar strings are char strings that
 * are duplicated via strdup and remain in whatever the passed in encoding is,
 * which is assumed to be UTF-8 but may be other encoding. Therefore the
 * significance of the conversion functions is primarily for UNICODE builds.
 *
 * Allocated memory should be free'd with curlx_unicodefree().
 *

 * Note: Because these are curlx functions their memory usage is not tracked
 * by the curl memory tracker memdebug. You'll notice that curlx function-like
 * macros call free and strdup in parentheses, eg (strdup)(ptr), and that's to
 * ensure that the curl memdebug override macros do not replace them.
 */

#if defined(UNICODE) && defined(WIN32)

#define curlx_convert_UTF8_to_tchar(ptr) curlx_convert_UTF8_to_wchar((ptr))
#define curlx_convert_tchar_to_UTF8(ptr) curlx_convert_wchar_to_UTF8((ptr))








typedef union {
  unsigned short       *tchar_ptr;
  const unsigned short *const_tchar_ptr;
  unsigned short       *tbyte_ptr;
  const unsigned short *const_tbyte_ptr;
} xcharp_u;

#else

#define curlx_convert_UTF8_to_tchar(ptr) (strdup)(ptr)
#define curlx_convert_tchar_to_UTF8(ptr) (strdup)(ptr)



typedef union {
  char                *tchar_ptr;
  const char          *const_tchar_ptr;
  unsigned char       *tbyte_ptr;
  const unsigned char *const_tbyte_ptr;
} xcharp_u;

#endif /* UNICODE && WIN32 */

#define curlx_unicodefree(ptr)                          \
  do {                                                  \
    if(ptr) {                                           \
      (free)(ptr);                                      \
      (ptr) = NULL;                                     \
    }                                                   \
  } while(0)

#endif /* HEADER_CURL_MULTIBYTE_H */
Changes to jni/curl/lib/curl_ntlm_core.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 * https://davenport.sourceforge.io/ntlm.html
 * https://www.innovation.ch/java/ntlm.html
 */

/* Please keep the SSL backend-specific #if branches in this order:

   1. USE_OPENSSL
   2. USE_GNUTLS_NETTLE
   3. USE_GNUTLS
   4. USE_NSS
   5. USE_MBEDTLS
   6. USE_SECTRANSP
   7. USE_OS400CRYPTO
   8. USE_WIN32_CRYPTO

   This ensures that:
   - the same SSL branch gets activated throughout this source
     file even if multiple backends are enabled at the same time.
   - OpenSSL and NSS have higher priority than Windows Crypt, due
     to issues with the latter supporting NTLM2Session responses
     in NTLM type-3 messages.







<
|
|
|
|
|
|







30
31
32
33
34
35
36

37
38
39
40
41
42
43
44
45
46
47
48
49
 * https://davenport.sourceforge.io/ntlm.html
 * https://www.innovation.ch/java/ntlm.html
 */

/* Please keep the SSL backend-specific #if branches in this order:

   1. USE_OPENSSL

   2. USE_GNUTLS
   3. USE_NSS
   4. USE_MBEDTLS
   5. USE_SECTRANSP
   6. USE_OS400CRYPTO
   7. USE_WIN32_CRYPTO

   This ensures that:
   - the same SSL branch gets activated throughout this source
     file even if multiple backends are enabled at the same time.
   - OpenSSL and NSS have higher priority than Windows Crypt, due
     to issues with the latter supporting NTLM2Session responses
     in NTLM type-3 messages.
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#    define DESKEY(x) x
#    define DESKEYARG(x) x
#  else
#    define DESKEYARG(x) *x
#    define DESKEY(x) &x
#  endif

#elif defined(USE_GNUTLS_NETTLE)

#  include <nettle/des.h>

#elif defined(USE_GNUTLS)

#  include <gcrypt.h>

#elif defined(USE_NSS)

#  include <nss.h>
#  include <pk11pub.h>
#  include <hasht.h>








|


<
<
<
<







69
70
71
72
73
74
75
76
77
78




79
80
81
82
83
84
85
#    define DESKEY(x) x
#    define DESKEYARG(x) x
#  else
#    define DESKEYARG(x) *x
#    define DESKEY(x) &x
#  endif

#elif defined(USE_GNUTLS)

#  include <nettle/des.h>





#elif defined(USE_NSS)

#  include <nss.h>
#  include <pk11pub.h>
#  include <hasht.h>

155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
  /* Set the key parity to odd */
  DES_set_odd_parity(&key);

  /* Set the key */
  DES_set_key(&key, ks);
}

#elif defined(USE_GNUTLS_NETTLE)

static void setup_des_key(const unsigned char *key_56,
                          struct des_ctx *des)
{
  char key[8];

  /* Expand the 56-bit key to 64-bits */
  extend_key_56_to_64(key_56, key);

  /* Set the key parity to odd */
  Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));

  /* Set the key */
  des_set_key(des, (const uint8_t *) key);
}

#elif defined(USE_GNUTLS)

/*
 * Turns a 56 bit key into the 64 bit, odd parity key and sets the key.
 */
static void setup_des_key(const unsigned char *key_56,
                          gcry_cipher_hd_t *des)
{
  char key[8];

  /* Expand the 56-bit key to 64-bits */
  extend_key_56_to_64(key_56, key);

  /* Set the key parity to odd */
  Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));

  /* Set the key */
  gcry_cipher_setkey(*des, key, sizeof(key));
}

#elif defined(USE_NSS)

/*
 * Expands a 56 bit key KEY_56 to 64 bit and encrypts 64 bit of data, using
 * the expanded key.  The caller is responsible for giving 64 bit of valid
 * data is IN and (at least) 64 bit large buffer as OUT.
 */







|
















<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173




















174
175
176
177
178
179
180
  /* Set the key parity to odd */
  DES_set_odd_parity(&key);

  /* Set the key */
  DES_set_key(&key, ks);
}

#elif defined(USE_GNUTLS)

static void setup_des_key(const unsigned char *key_56,
                          struct des_ctx *des)
{
  char key[8];

  /* Expand the 56-bit key to 64-bits */
  extend_key_56_to_64(key_56, key);

  /* Set the key parity to odd */
  Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));

  /* Set the key */
  des_set_key(des, (const uint8_t *) key);
}





















#elif defined(USE_NSS)

/*
 * Expands a 56 bit key KEY_56 to 64 bit and encrypts 64 bit of data, using
 * the expanded key.  The caller is responsible for giving 64 bit of valid
 * data is IN and (at least) 64 bit large buffer as OUT.
 */
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
  setup_des_key(keys + 7, DESKEY(ks));
  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results + 8),
                  DESKEY(ks), DES_ENCRYPT);

  setup_des_key(keys + 14, DESKEY(ks));
  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results + 16),
                  DESKEY(ks), DES_ENCRYPT);
#elif defined(USE_GNUTLS_NETTLE)
  struct des_ctx des;
  setup_des_key(keys, &des);
  des_encrypt(&des, 8, results, plaintext);
  setup_des_key(keys + 7, &des);
  des_encrypt(&des, 8, results + 8, plaintext);
  setup_des_key(keys + 14, &des);
  des_encrypt(&des, 8, results + 16, plaintext);
#elif defined(USE_GNUTLS)
  gcry_cipher_hd_t des;

  gcry_cipher_open(&des, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, 0);
  setup_des_key(keys, &des);
  gcry_cipher_encrypt(des, results, 8, plaintext, 8);
  gcry_cipher_close(des);

  gcry_cipher_open(&des, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, 0);
  setup_des_key(keys + 7, &des);
  gcry_cipher_encrypt(des, results + 8, 8, plaintext, 8);
  gcry_cipher_close(des);

  gcry_cipher_open(&des, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, 0);
  setup_des_key(keys + 14, &des);
  gcry_cipher_encrypt(des, results + 16, 8, plaintext, 8);
  gcry_cipher_close(des);
#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_SECTRANSP) \
  || defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
  encrypt_des(plaintext, results, keys);
  encrypt_des(plaintext, results + 8, keys + 7);
  encrypt_des(plaintext, results + 16, keys + 14);
#endif
}







|







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







373
374
375
376
377
378
379
380
381
382
383
384
385
386
387

















388
389
390
391
392
393
394
  setup_des_key(keys + 7, DESKEY(ks));
  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results + 8),
                  DESKEY(ks), DES_ENCRYPT);

  setup_des_key(keys + 14, DESKEY(ks));
  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results + 16),
                  DESKEY(ks), DES_ENCRYPT);
#elif defined(USE_GNUTLS)
  struct des_ctx des;
  setup_des_key(keys, &des);
  des_encrypt(&des, 8, results, plaintext);
  setup_des_key(keys + 7, &des);
  des_encrypt(&des, 8, results + 8, plaintext);
  setup_des_key(keys + 14, &des);
  des_encrypt(&des, 8, results + 16, plaintext);

















#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_SECTRANSP) \
  || defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
  encrypt_des(plaintext, results, keys);
  encrypt_des(plaintext, results + 8, keys + 7);
  encrypt_des(plaintext, results + 16, keys + 14);
#endif
}
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
    setup_des_key(pw, DESKEY(ks));
    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)lmbuffer,
                    DESKEY(ks), DES_ENCRYPT);

    setup_des_key(pw + 7, DESKEY(ks));
    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)(lmbuffer + 8),
                    DESKEY(ks), DES_ENCRYPT);
#elif defined(USE_GNUTLS_NETTLE)
    struct des_ctx des;
    setup_des_key(pw, &des);
    des_encrypt(&des, 8, lmbuffer, magic);
    setup_des_key(pw + 7, &des);
    des_encrypt(&des, 8, lmbuffer + 8, magic);
#elif defined(USE_GNUTLS)
    gcry_cipher_hd_t des;

    gcry_cipher_open(&des, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, 0);
    setup_des_key(pw, &des);
    gcry_cipher_encrypt(des, lmbuffer, 8, magic, 8);
    gcry_cipher_close(des);

    gcry_cipher_open(&des, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, 0);
    setup_des_key(pw + 7, &des);
    gcry_cipher_encrypt(des, lmbuffer + 8, 8, magic, 8);
    gcry_cipher_close(des);
#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_SECTRANSP) \
  || defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
    encrypt_des(magic, lmbuffer, pw);
    encrypt_des(magic, lmbuffer + 8, pw + 7);
#endif

    memset(lmbuffer + 16, 0, 21 - 16);







|





<
<
<
<
<
<
<
<
<
<
<
<







427
428
429
430
431
432
433
434
435
436
437
438
439












440
441
442
443
444
445
446
    setup_des_key(pw, DESKEY(ks));
    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)lmbuffer,
                    DESKEY(ks), DES_ENCRYPT);

    setup_des_key(pw + 7, DESKEY(ks));
    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)(lmbuffer + 8),
                    DESKEY(ks), DES_ENCRYPT);
#elif defined(USE_GNUTLS)
    struct des_ctx des;
    setup_des_key(pw, &des);
    des_encrypt(&des, 8, lmbuffer, magic);
    setup_des_key(pw + 7, &des);
    des_encrypt(&des, 8, lmbuffer + 8, magic);












#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_SECTRANSP) \
  || defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
    encrypt_des(magic, lmbuffer, pw);
    encrypt_des(magic, lmbuffer + 8, pw + 7);
#endif

    memset(lmbuffer + 16, 0, 21 - 16);
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
  unsigned int len = 0;
  unsigned char *ptr = NULL;
  unsigned char hmac_output[HMAC_MD5_LENGTH];
  curl_off_t tw;

  CURLcode result = CURLE_OK;

#if CURL_SIZEOF_CURL_OFF_T < 8
#error "this section needs 64bit support to work"
#endif

  /* Calculate the timestamp */
#ifdef DEBUGBUILD
  char *force_timestamp = getenv("CURL_FORCETIME");
  if(force_timestamp)







|







586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
  unsigned int len = 0;
  unsigned char *ptr = NULL;
  unsigned char hmac_output[HMAC_MD5_LENGTH];
  curl_off_t tw;

  CURLcode result = CURLE_OK;

#if SIZEOF_CURL_OFF_T < 8
#error "this section needs 64bit support to work"
#endif

  /* Calculate the timestamp */
#ifdef DEBUGBUILD
  char *force_timestamp = getenv("CURL_FORCETIME");
  if(force_timestamp)
Changes to jni/curl/lib/curl_ntlm_core.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_NTLM_CORE_H
#define HEADER_CURL_NTLM_CORE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_NTLM_CORE_H
#define HEADER_CURL_NTLM_CORE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

#if defined(USE_CURL_NTLM_CORE)

/* If NSS is the first available SSL backend (see order in curl_ntlm_core.c)
   then it must be initialized to be used by NTLM. */
#if !defined(USE_OPENSSL) && \
    !defined(USE_WOLFSSL) && \
    !defined(USE_GNUTLS_NETTLE) && \
    !defined(USE_GNUTLS) && \
    defined(USE_NSS)
#define NTLM_NEEDS_NSS_INIT
#endif

#if defined(USE_OPENSSL) || defined(USE_WOLFSSL)
#ifdef USE_WOLFSSL







<







26
27
28
29
30
31
32

33
34
35
36
37
38
39

#if defined(USE_CURL_NTLM_CORE)

/* If NSS is the first available SSL backend (see order in curl_ntlm_core.c)
   then it must be initialized to be used by NTLM. */
#if !defined(USE_OPENSSL) && \
    !defined(USE_WOLFSSL) && \

    !defined(USE_GNUTLS) && \
    defined(USE_NSS)
#define NTLM_NEEDS_NSS_INIT
#endif

#if defined(USE_OPENSSL) || defined(USE_WOLFSSL)
#ifdef USE_WOLFSSL
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#if defined(USE_NTRESPONSES) && !defined(CURL_DISABLE_CRYPTO_AUTH)
#define USE_NTLM2SESSION
#endif

/* Define USE_NTLM_V2 in order to allow the type-3 message to include the
   LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1
   and support for 64-bit integers. */
#if defined(USE_NTRESPONSES) && (CURL_SIZEOF_CURL_OFF_T > 4)
#define USE_NTLM_V2
#endif

void Curl_ntlm_core_lm_resp(const unsigned char *keys,
                            const unsigned char *plaintext,
                            unsigned char *results);








|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#if defined(USE_NTRESPONSES) && !defined(CURL_DISABLE_CRYPTO_AUTH)
#define USE_NTLM2SESSION
#endif

/* Define USE_NTLM_V2 in order to allow the type-3 message to include the
   LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1
   and support for 64-bit integers. */
#if defined(USE_NTRESPONSES) && (SIZEOF_CURL_OFF_T > 4)
#define USE_NTLM_V2
#endif

void Curl_ntlm_core_lm_resp(const unsigned char *keys,
                            const unsigned char *plaintext,
                            unsigned char *results);

Changes to jni/curl/lib/curl_rtmp.c.
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
{
  RTMP *r = RTMP_Alloc();
  if(!r)
    return CURLE_OUT_OF_MEMORY;

  RTMP_Init(r);
  RTMP_SetBufferMS(r, DEF_BUFTIME);
  if(!RTMP_SetupURL(r, data->change.url)) {
    RTMP_Free(r);
    return CURLE_URL_MALFORMAT;
  }
  conn->proto.rtmp = r;
  return CURLE_OK;
}








|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
{
  RTMP *r = RTMP_Alloc();
  if(!r)
    return CURLE_OUT_OF_MEMORY;

  RTMP_Init(r);
  RTMP_SetBufferMS(r, DEF_BUFTIME);
  if(!RTMP_SetupURL(r, data->state.url)) {
    RTMP_Free(r);
    return CURLE_URL_MALFORMAT;
  }
  conn->proto.rtmp = r;
  return CURLE_OK;
}

Changes to jni/curl/lib/curl_sasl.c.
19
20
21
22
23
24
25


26
27
28
29
30
31
32
 * KIND, either express or implied.
 *
 * RFC2195 CRAM-MD5 authentication
 * RFC2617 Basic and Digest Access Authentication
 * RFC2831 DIGEST-MD5 authentication
 * RFC4422 Simple Authentication and Security Layer (SASL)
 * RFC4616 PLAIN authentication


 * RFC6749 OAuth 2.0 Authorization Framework
 * RFC7628 A Set of SASL Mechanisms for OAuth
 * Draft   LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
 *
 ***************************************************************************/

#include "curl_setup.h"







>
>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 * KIND, either express or implied.
 *
 * RFC2195 CRAM-MD5 authentication
 * RFC2617 Basic and Digest Access Authentication
 * RFC2831 DIGEST-MD5 authentication
 * RFC4422 Simple Authentication and Security Layer (SASL)
 * RFC4616 PLAIN authentication
 * RFC5802 SCRAM-SHA-1 authentication
 * RFC7677 SCRAM-SHA-256 authentication
 * RFC6749 OAuth 2.0 Authorization Framework
 * RFC7628 A Set of SASL Mechanisms for OAuth
 * Draft   LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
 *
 ***************************************************************************/

#include "curl_setup.h"
63
64
65
66
67
68
69


70
71
72
73
74
75
76
  { "CRAM-MD5",     8,  SASL_MECH_CRAM_MD5 },
  { "DIGEST-MD5",   10, SASL_MECH_DIGEST_MD5 },
  { "GSSAPI",       6,  SASL_MECH_GSSAPI },
  { "EXTERNAL",     8,  SASL_MECH_EXTERNAL },
  { "NTLM",         4,  SASL_MECH_NTLM },
  { "XOAUTH2",      7,  SASL_MECH_XOAUTH2 },
  { "OAUTHBEARER",  11, SASL_MECH_OAUTHBEARER },


  { ZERO_NULL,      0,  0 }
};

/*
 * Curl_sasl_cleanup()
 *
 * This is used to cleanup any libraries or curl modules used by the sasl







>
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  { "CRAM-MD5",     8,  SASL_MECH_CRAM_MD5 },
  { "DIGEST-MD5",   10, SASL_MECH_DIGEST_MD5 },
  { "GSSAPI",       6,  SASL_MECH_GSSAPI },
  { "EXTERNAL",     8,  SASL_MECH_EXTERNAL },
  { "NTLM",         4,  SASL_MECH_NTLM },
  { "XOAUTH2",      7,  SASL_MECH_XOAUTH2 },
  { "OAUTHBEARER",  11, SASL_MECH_OAUTHBEARER },
  { "SCRAM-SHA-1",  11, SASL_MECH_SCRAM_SHA_1 },
  { "SCRAM-SHA-256",13, SASL_MECH_SCRAM_SHA_256 },
  { ZERO_NULL,      0,  0 }
};

/*
 * Curl_sasl_cleanup()
 *
 * This is used to cleanup any libraries or curl modules used by the sasl
85
86
87
88
89
90
91







92
93
94
95
96
97
98
{
#if defined(USE_KERBEROS5)
  /* Cleanup the gssapi structure */
  if(authused == SASL_MECH_GSSAPI) {
    Curl_auth_cleanup_gssapi(&conn->krb5);
  }
#endif








#if defined(USE_NTLM)
  /* Cleanup the NTLM structure */
  if(authused == SASL_MECH_NTLM) {
    Curl_auth_cleanup_ntlm(&conn->ntlm);
  }
#endif







>
>
>
>
>
>
>







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
{
#if defined(USE_KERBEROS5)
  /* Cleanup the gssapi structure */
  if(authused == SASL_MECH_GSSAPI) {
    Curl_auth_cleanup_gssapi(&conn->krb5);
  }
#endif

#if defined(USE_GSASL)
  /* Cleanup the GSASL structure */
  if(authused & (SASL_MECH_SCRAM_SHA_1 | SASL_MECH_SCRAM_SHA_256)) {
    Curl_auth_gsasl_cleanup(&conn->gsasl);
  }
#endif

#if defined(USE_NTLM)
  /* Cleanup the NTLM structure */
  if(authused == SASL_MECH_NTLM) {
    Curl_auth_cleanup_ntlm(&conn->ntlm);
  }
#endif
211
212
213
214
215
216
217

218
219
220
221
222
223
224
    "NTLM",
    "NTLM_TYPE2MSG",
    "GSSAPI",
    "GSSAPI_TOKEN",
    "GSSAPI_NO_DATA",
    "OAUTH2",
    "OAUTH2_RESP",

    "CANCEL",
    "FINAL",
    /* LAST */
  };

  if(sasl->state != newstate)
    infof(data, "SASL %p state change from %s to %s\n",







>







222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
    "NTLM",
    "NTLM_TYPE2MSG",
    "GSSAPI",
    "GSSAPI_TOKEN",
    "GSSAPI_NO_DATA",
    "OAUTH2",
    "OAUTH2_RESP",
    "GSASL",
    "CANCEL",
    "FINAL",
    /* LAST */
  };

  if(sasl->state != newstate)
    infof(data, "SASL %p state change from %s to %s\n",
310
311
312
313
314
315
316































317
318
319
320
321
322
323
                                                      conn->passwd,
                                                      service,
                                                      data->conn->host.name,
                                                      sasl->mutual_auth,
                                                      NULL, &conn->krb5,
                                                      &resp, &len);
    }































    else
#endif
#ifndef CURL_DISABLE_CRYPTO_AUTH
    if((enabledmechs & SASL_MECH_DIGEST_MD5) &&
       Curl_auth_is_digest_supported()) {
      mech = SASL_MECH_STRING_DIGEST_MD5;
      state1 = SASL_DIGESTMD5;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
                                                      conn->passwd,
                                                      service,
                                                      data->conn->host.name,
                                                      sasl->mutual_auth,
                                                      NULL, &conn->krb5,
                                                      &resp, &len);
    }
    else
#endif
#ifdef USE_GSASL
    if((enabledmechs & SASL_MECH_SCRAM_SHA_256) &&
       Curl_auth_gsasl_is_supported(data, SASL_MECH_STRING_SCRAM_SHA_256,
                                    &conn->gsasl)) {
      mech = SASL_MECH_STRING_SCRAM_SHA_256;
      sasl->authused = SASL_MECH_SCRAM_SHA_256;
      state1 = SASL_GSASL;
      state2 = SASL_GSASL;

      result = Curl_auth_gsasl_start(data, conn->user,
                                     conn->passwd, &conn->gsasl);
      if(result == CURLE_OK && (force_ir || data->set.sasl_ir))
        result = Curl_auth_gsasl_token(data, NULL, &conn->gsasl,
                                       &resp, &len);
    }
    else if((enabledmechs & SASL_MECH_SCRAM_SHA_1) &&
            Curl_auth_gsasl_is_supported(data, SASL_MECH_STRING_SCRAM_SHA_1,
                                         &conn->gsasl)) {
      mech = SASL_MECH_STRING_SCRAM_SHA_1;
      sasl->authused = SASL_MECH_SCRAM_SHA_1;
      state1 = SASL_GSASL;
      state2 = SASL_GSASL;

      result = Curl_auth_gsasl_start(data, conn->user,
                                     conn->passwd, &conn->gsasl);
      if(result == CURLE_OK && (force_ir || data->set.sasl_ir))
        result = Curl_auth_gsasl_token(data, NULL, &conn->gsasl,
                                       &resp, &len);
    }
    else
#endif
#ifndef CURL_DISABLE_CRYPTO_AUTH
    if((enabledmechs & SASL_MECH_DIGEST_MD5) &&
       Curl_auth_is_digest_supported()) {
      mech = SASL_MECH_STRING_DIGEST_MD5;
      state1 = SASL_DIGESTMD5;
476
477
478
479
480
481
482
483
484









485
486
487
488
489
490
491
    break;
  case SASL_LOGIN_PASSWD:
    result = Curl_auth_create_login_message(data, conn->passwd, &resp, &len);
    break;
  case SASL_EXTERNAL:
    result = Curl_auth_create_external_message(data, conn->user, &resp, &len);
    break;

#ifndef CURL_DISABLE_CRYPTO_AUTH









  case SASL_CRAMMD5:
    sasl->params->getmessage(data->state.buffer, &serverdata);
    result = Curl_auth_decode_cram_md5_message(serverdata, &chlg, &chlglen);
    if(!result)
      result = Curl_auth_create_cram_md5_message(data, chlg, conn->user,
                                                 conn->passwd, &resp, &len);
    free(chlg);







<

>
>
>
>
>
>
>
>
>







519
520
521
522
523
524
525

526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
    break;
  case SASL_LOGIN_PASSWD:
    result = Curl_auth_create_login_message(data, conn->passwd, &resp, &len);
    break;
  case SASL_EXTERNAL:
    result = Curl_auth_create_external_message(data, conn->user, &resp, &len);
    break;

#ifndef CURL_DISABLE_CRYPTO_AUTH
#ifdef USE_GSASL
  case SASL_GSASL:
    sasl->params->getmessage(data->state.buffer, &serverdata);
    result = Curl_auth_gsasl_token(data, serverdata, &conn->gsasl,
                                   &resp, &len);
    if(len > 0)
      newstate = SASL_GSASL;
    break;
#endif
  case SASL_CRAMMD5:
    sasl->params->getmessage(data->state.buffer, &serverdata);
    result = Curl_auth_decode_cram_md5_message(serverdata, &chlg, &chlglen);
    if(!result)
      result = Curl_auth_create_cram_md5_message(data, chlg, conn->user,
                                                 conn->passwd, &resp, &len);
    free(chlg);
Changes to jni/curl/lib/curl_sasl.h.
33
34
35
36
37
38
39


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

74
75
76
77
78
79
80
#define SASL_MECH_CRAM_MD5          (1 << 2)
#define SASL_MECH_DIGEST_MD5        (1 << 3)
#define SASL_MECH_GSSAPI            (1 << 4)
#define SASL_MECH_EXTERNAL          (1 << 5)
#define SASL_MECH_NTLM              (1 << 6)
#define SASL_MECH_XOAUTH2           (1 << 7)
#define SASL_MECH_OAUTHBEARER       (1 << 8)



/* Authentication mechanism values */
#define SASL_AUTH_NONE          0
#define SASL_AUTH_ANY           ~0U
#define SASL_AUTH_DEFAULT       (SASL_AUTH_ANY & ~SASL_MECH_EXTERNAL)

/* Authentication mechanism strings */
#define SASL_MECH_STRING_LOGIN        "LOGIN"
#define SASL_MECH_STRING_PLAIN        "PLAIN"
#define SASL_MECH_STRING_CRAM_MD5     "CRAM-MD5"
#define SASL_MECH_STRING_DIGEST_MD5   "DIGEST-MD5"
#define SASL_MECH_STRING_GSSAPI       "GSSAPI"
#define SASL_MECH_STRING_EXTERNAL     "EXTERNAL"
#define SASL_MECH_STRING_NTLM         "NTLM"
#define SASL_MECH_STRING_XOAUTH2      "XOAUTH2"
#define SASL_MECH_STRING_OAUTHBEARER  "OAUTHBEARER"



/* SASL machine states */
typedef enum {
  SASL_STOP,
  SASL_PLAIN,
  SASL_LOGIN,
  SASL_LOGIN_PASSWD,
  SASL_EXTERNAL,
  SASL_CRAMMD5,
  SASL_DIGESTMD5,
  SASL_DIGESTMD5_RESP,
  SASL_NTLM,
  SASL_NTLM_TYPE2MSG,
  SASL_GSSAPI,
  SASL_GSSAPI_TOKEN,
  SASL_GSSAPI_NO_DATA,
  SASL_OAUTH2,
  SASL_OAUTH2_RESP,

  SASL_CANCEL,
  SASL_FINAL
} saslstate;

/* Progress indicator */
typedef enum {
  SASL_IDLE,







>
>
















>
>


















>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#define SASL_MECH_CRAM_MD5          (1 << 2)
#define SASL_MECH_DIGEST_MD5        (1 << 3)
#define SASL_MECH_GSSAPI            (1 << 4)
#define SASL_MECH_EXTERNAL          (1 << 5)
#define SASL_MECH_NTLM              (1 << 6)
#define SASL_MECH_XOAUTH2           (1 << 7)
#define SASL_MECH_OAUTHBEARER       (1 << 8)
#define SASL_MECH_SCRAM_SHA_1       (1 << 9)
#define SASL_MECH_SCRAM_SHA_256     (1 << 10)

/* Authentication mechanism values */
#define SASL_AUTH_NONE          0
#define SASL_AUTH_ANY           ~0U
#define SASL_AUTH_DEFAULT       (SASL_AUTH_ANY & ~SASL_MECH_EXTERNAL)

/* Authentication mechanism strings */
#define SASL_MECH_STRING_LOGIN        "LOGIN"
#define SASL_MECH_STRING_PLAIN        "PLAIN"
#define SASL_MECH_STRING_CRAM_MD5     "CRAM-MD5"
#define SASL_MECH_STRING_DIGEST_MD5   "DIGEST-MD5"
#define SASL_MECH_STRING_GSSAPI       "GSSAPI"
#define SASL_MECH_STRING_EXTERNAL     "EXTERNAL"
#define SASL_MECH_STRING_NTLM         "NTLM"
#define SASL_MECH_STRING_XOAUTH2      "XOAUTH2"
#define SASL_MECH_STRING_OAUTHBEARER  "OAUTHBEARER"
#define SASL_MECH_STRING_SCRAM_SHA_1  "SCRAM-SHA-1"
#define SASL_MECH_STRING_SCRAM_SHA_256 "SCRAM-SHA-256"

/* SASL machine states */
typedef enum {
  SASL_STOP,
  SASL_PLAIN,
  SASL_LOGIN,
  SASL_LOGIN_PASSWD,
  SASL_EXTERNAL,
  SASL_CRAMMD5,
  SASL_DIGESTMD5,
  SASL_DIGESTMD5_RESP,
  SASL_NTLM,
  SASL_NTLM_TYPE2MSG,
  SASL_GSSAPI,
  SASL_GSSAPI_TOKEN,
  SASL_GSSAPI_NO_DATA,
  SASL_OAUTH2,
  SASL_OAUTH2_RESP,
  SASL_GSASL,
  SASL_CANCEL,
  SASL_FINAL
} saslstate;

/* Progress indicator */
typedef enum {
  SASL_IDLE,
Changes to jni/curl/lib/curl_setup.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SETUP_H
#define HEADER_CURL_SETUP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SETUP_H
#define HEADER_CURL_SETUP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
50
51
52
53
54
55
56










57
58
59
60
61
62
63
 */
#  ifndef WIN32_LEAN_AND_MEAN
#    define WIN32_LEAN_AND_MEAN
#  endif
#  ifndef NOGDI
#    define NOGDI
#  endif










#endif

/*
 * Include configuration script results or hand-crafted
 * configuration file for platforms which lack config tool.
 */








>
>
>
>
>
>
>
>
>
>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 */
#  ifndef WIN32_LEAN_AND_MEAN
#    define WIN32_LEAN_AND_MEAN
#  endif
#  ifndef NOGDI
#    define NOGDI
#  endif
/* Detect Windows App environment which has a restricted access
 * to the Win32 APIs. */
# if (defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602)) || \
  defined(WINAPI_FAMILY)
#  include <winapifamily.h>
#  if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) &&  \
     !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#    define CURL_WINDOWS_APP
#  endif
# endif
#endif

/*
 * Include configuration script results or hand-crafted
 * configuration file for platforms which lack config tool.
 */

147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/* ================================================================ */
/*  If you need to include a system header file for your platform,  */
/*  please, do it beyond the point further indicated in this file.  */
/* ================================================================ */

#include <curl/curl.h>

#define CURL_SIZEOF_CURL_OFF_T SIZEOF_CURL_OFF_T

/*
 * Disable other protocols when http is the only one desired.
 */

#ifdef HTTP_ONLY
#  ifndef CURL_DISABLE_TFTP
#    define CURL_DISABLE_TFTP







<
<







157
158
159
160
161
162
163


164
165
166
167
168
169
170
/* ================================================================ */
/*  If you need to include a system header file for your platform,  */
/*  please, do it beyond the point further indicated in this file.  */
/* ================================================================ */

#include <curl/curl.h>



/*
 * Disable other protocols when http is the only one desired.
 */

#ifdef HTTP_ONLY
#  ifndef CURL_DISABLE_TFTP
#    define CURL_DISABLE_TFTP
331
332
333
334
335
336
337

338
339

340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358

359
360
361

362
363
364
365
366
367
368
#  define lseek(fdes,offset,whence)  _lseeki64(fdes, offset, whence)
#  undef  fstat
#  define fstat(fdes,stp)            _fstati64(fdes, stp)
#  undef  stat
#  define stat(fname,stp)            curlx_win32_stat(fname, stp)
#  define struct_stat                struct _stati64
#  define LSEEK_ERROR                (__int64)-1

#  define fopen(fname,mode)          curlx_win32_fopen(fname, mode)
#  define access(fname,mode)         curlx_win32_access(fname, mode)

   int curlx_win32_stat(const char *path, struct_stat *buffer);
   FILE *curlx_win32_fopen(const char *filename, const char *mode);
   int curlx_win32_access(const char *path, int mode);
#endif

/*
 * Small file (<2Gb) support using WIN32 functions.
 */

#ifdef USE_WIN32_SMALL_FILES
#  include <io.h>
#  include <sys/types.h>
#  include <sys/stat.h>
#  ifndef _WIN32_WCE
#    undef  lseek
#    define lseek(fdes,offset,whence)  _lseek(fdes, (long)offset, whence)
#    define fstat(fdes,stp)            _fstat(fdes, stp)
#    define stat(fname,stp)            curlx_win32_stat(fname, stp)
#    define struct_stat                struct _stat

#    define fopen(fname,mode)          curlx_win32_fopen(fname, mode)
#    define access(fname,mode)         curlx_win32_access(fname, mode)
     int curlx_win32_stat(const char *path, struct_stat *buffer);

     FILE *curlx_win32_fopen(const char *filename, const char *mode);
     int curlx_win32_access(const char *path, int mode);
#  endif
#  define LSEEK_ERROR                (long)-1
#endif

#ifndef struct_stat







>


>



















>



>







339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
#  define lseek(fdes,offset,whence)  _lseeki64(fdes, offset, whence)
#  undef  fstat
#  define fstat(fdes,stp)            _fstati64(fdes, stp)
#  undef  stat
#  define stat(fname,stp)            curlx_win32_stat(fname, stp)
#  define struct_stat                struct _stati64
#  define LSEEK_ERROR                (__int64)-1
#  define open                       curlx_win32_open
#  define fopen(fname,mode)          curlx_win32_fopen(fname, mode)
#  define access(fname,mode)         curlx_win32_access(fname, mode)
   int curlx_win32_open(const char *filename, int oflag, ...);
   int curlx_win32_stat(const char *path, struct_stat *buffer);
   FILE *curlx_win32_fopen(const char *filename, const char *mode);
   int curlx_win32_access(const char *path, int mode);
#endif

/*
 * Small file (<2Gb) support using WIN32 functions.
 */

#ifdef USE_WIN32_SMALL_FILES
#  include <io.h>
#  include <sys/types.h>
#  include <sys/stat.h>
#  ifndef _WIN32_WCE
#    undef  lseek
#    define lseek(fdes,offset,whence)  _lseek(fdes, (long)offset, whence)
#    define fstat(fdes,stp)            _fstat(fdes, stp)
#    define stat(fname,stp)            curlx_win32_stat(fname, stp)
#    define struct_stat                struct _stat
#    define open                       curlx_win32_open
#    define fopen(fname,mode)          curlx_win32_fopen(fname, mode)
#    define access(fname,mode)         curlx_win32_access(fname, mode)
     int curlx_win32_stat(const char *path, struct_stat *buffer);
     int curlx_win32_open(const char *filename, int oflag, ...);
     FILE *curlx_win32_fopen(const char *filename, const char *mode);
     int curlx_win32_access(const char *path, int mode);
#  endif
#  define LSEEK_ERROR                (long)-1
#endif

#ifndef struct_stat
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
#    define SIZEOF_OFF_T 4
#  endif
#endif

#if (SIZEOF_CURL_OFF_T == 4)
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFF)
#else
   /* assume CURL_SIZEOF_CURL_OFF_T == 8 */
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF)
#endif
#define CURL_OFF_T_MIN (-CURL_OFF_T_MAX - CURL_OFF_T_C(1))

#if (SIZEOF_TIME_T == 4)
#  ifdef HAVE_TIME_T_UNSIGNED
#  define TIME_T_MAX UINT_MAX







|







416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
#    define SIZEOF_OFF_T 4
#  endif
#endif

#if (SIZEOF_CURL_OFF_T == 4)
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFF)
#else
   /* assume SIZEOF_CURL_OFF_T == 8 */
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF)
#endif
#define CURL_OFF_T_MIN (-CURL_OFF_T_MAX - CURL_OFF_T_C(1))

#if (SIZEOF_TIME_T == 4)
#  ifdef HAVE_TIME_T_UNSIGNED
#  define TIME_T_MAX UINT_MAX
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639

#define LIBIDN_REQUIRED_VERSION "0.4.1"

#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
    defined(USE_MBEDTLS) || \
    defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || \
    defined(USE_SECTRANSP) || defined(USE_GSKIT) || defined(USE_MESALINK) || \
    defined(USE_BEARSSL)
#define USE_SSL    /* SSL support has been enabled */
#endif

/* Single point where USE_SPNEGO definition might be defined */
#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
#define USE_SPNEGO
#endif

/* Single point where USE_KERBEROS5 definition might be defined */
#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
#define USE_KERBEROS5
#endif

/* Single point where USE_NTLM definition might be defined */
#if !defined(CURL_DISABLE_NTLM) && !defined(CURL_DISABLE_CRYPTO_AUTH)
#if defined(USE_OPENSSL) || defined(USE_MBEDTLS) ||                     \
  defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_SECTRANSP) ||  \
  defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO) ||              \
  (defined(USE_WOLFSSL) && defined(HAVE_WOLFSSL_DES_ECB_ENCRYPT))

#define USE_CURL_NTLM_CORE








|
















|







620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651

#define LIBIDN_REQUIRED_VERSION "0.4.1"

#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
    defined(USE_MBEDTLS) || \
    defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || \
    defined(USE_SECTRANSP) || defined(USE_GSKIT) || defined(USE_MESALINK) || \
    defined(USE_BEARSSL) || defined(USE_RUSTLS)
#define USE_SSL    /* SSL support has been enabled */
#endif

/* Single point where USE_SPNEGO definition might be defined */
#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
#define USE_SPNEGO
#endif

/* Single point where USE_KERBEROS5 definition might be defined */
#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
#define USE_KERBEROS5
#endif

/* Single point where USE_NTLM definition might be defined */
#ifndef CURL_DISABLE_CRYPTO_AUTH
#if defined(USE_OPENSSL) || defined(USE_MBEDTLS) ||                     \
  defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_SECTRANSP) ||  \
  defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO) ||              \
  (defined(USE_WOLFSSL) && defined(HAVE_WOLFSSL_DES_ECB_ENCRYPT))

#define USE_CURL_NTLM_CORE

756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
#  endif
#else  /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */
#  ifdef USE_RECV_BEFORE_SEND_WORKAROUND
#    undef USE_RECV_BEFORE_SEND_WORKAROUND
#  endif
#endif /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */

/* Detect Windows App environment which has a restricted access
 * to the Win32 APIs. */
# if (defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602)) || \
  defined(WINAPI_FAMILY)
#  include <winapifamily.h>
#  if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) &&  \
     !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#    define CURL_WINDOWS_APP
#  endif
# endif

/* for systems that don't detect this in configure, use a sensible default */
#ifndef CURL_SA_FAMILY_T
#define CURL_SA_FAMILY_T unsigned short
#endif

/* Some convenience macros to get the larger/smaller value out of two given.
   We prefix with CURL to prevent name collisions. */







<
<
<
<
<
<
<
<
<
<
<







768
769
770
771
772
773
774











775
776
777
778
779
780
781
#  endif
#else  /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */
#  ifdef USE_RECV_BEFORE_SEND_WORKAROUND
#    undef USE_RECV_BEFORE_SEND_WORKAROUND
#  endif
#endif /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */












/* for systems that don't detect this in configure, use a sensible default */
#ifndef CURL_SA_FAMILY_T
#define CURL_SA_FAMILY_T unsigned short
#endif

/* Some convenience macros to get the larger/smaller value out of two given.
   We prefix with CURL to prevent name collisions. */
Changes to jni/curl/lib/doh.c.
203
204
205
206
207
208
209
210
211


212
213
214
215
216
217
218
219
220
    dohp->headers = NULL;
    Curl_expire(data, 0, EXPIRE_RUN_NOW);
  }
  return 0;
}

#define ERROR_CHECK_SETOPT(x,y) \
do {                                      \
  result = curl_easy_setopt(doh, x, y);   \


  if(result)                              \
    goto error;                           \
} while(0)

static CURLcode dohprobe(struct Curl_easy *data,
                         struct dnsprobe *p, DNStype dnstype,
                         const char *host,
                         const char *url, CURLM *multi,
                         struct curl_slist *headers)







|
|
>
>
|
|







203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
    dohp->headers = NULL;
    Curl_expire(data, 0, EXPIRE_RUN_NOW);
  }
  return 0;
}

#define ERROR_CHECK_SETOPT(x,y) \
do {                                          \
  result = curl_easy_setopt(doh, x, y);       \
  if(result &&                                \
     result != CURLE_NOT_BUILT_IN &&          \
     result != CURLE_UNKNOWN_OPTION)          \
    goto error;                               \
} while(0)

static CURLcode dohprobe(struct Curl_easy *data,
                         struct dnsprobe *p, DNStype dnstype,
                         const char *host,
                         const char *url, CURLM *multi,
                         struct curl_slist *headers)
278
279
280
281
282
283
284



285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307


308
309
310
311


312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355















356
357
358
359
360
361




362
363
364
365
366
367
368
369
    /* enforce HTTPS if not debug */
    ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
#else
    /* in debug mode, also allow http */
    ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTP|CURLPROTO_HTTPS);
#endif
    ERROR_CHECK_SETOPT(CURLOPT_TIMEOUT_MS, (long)timeout_ms);



    if(data->set.verbose)
      ERROR_CHECK_SETOPT(CURLOPT_VERBOSE, 1L);
    if(data->set.no_signal)
      ERROR_CHECK_SETOPT(CURLOPT_NOSIGNAL, 1L);

    /* Inherit *some* SSL options from the user's transfer. This is a
       best-guess as to which options are needed for compatibility. #3661 */
    if(data->set.ssl.falsestart)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_FALSESTART, 1L);
    if(data->set.ssl.primary.verifyhost)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYHOST, 2L);
#ifndef CURL_DISABLE_PROXY
    if(data->set.proxy_ssl.primary.verifyhost)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYHOST, 2L);
    if(data->set.proxy_ssl.primary.verifypeer)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYPEER, 1L);
    if(data->set.str[STRING_SSL_CAFILE_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAINFO,
        data->set.str[STRING_SSL_CAFILE_PROXY]);
    }
    if(data->set.str[STRING_SSL_CRLFILE_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CRLFILE,
        data->set.str[STRING_SSL_CRLFILE_PROXY]);


    }
    if(data->set.proxy_ssl.no_revoke)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
    else if(data->set.proxy_ssl.revoke_best_effort)


      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_OPTIONS,
                         CURLSSLOPT_REVOKE_BEST_EFFORT);
    if(data->set.str[STRING_SSL_CAPATH_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAPATH,
        data->set.str[STRING_SSL_CAPATH_PROXY]);
    }
#endif

    if(data->set.ssl.primary.verifypeer)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYPEER, 1L);
    if(data->set.ssl.primary.verifystatus)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYSTATUS, 1L);
    if(data->set.str[STRING_SSL_CAFILE_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAINFO,
        data->set.str[STRING_SSL_CAFILE_ORIG]);
    }
    if(data->set.str[STRING_SSL_CAPATH_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAPATH,
        data->set.str[STRING_SSL_CAPATH_ORIG]);
    }
    if(data->set.str[STRING_SSL_CRLFILE_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CRLFILE,
        data->set.str[STRING_SSL_CRLFILE_ORIG]);
    }
    if(data->set.ssl.certinfo)
      ERROR_CHECK_SETOPT(CURLOPT_CERTINFO, 1L);
    if(data->set.str[STRING_SSL_RANDOM_FILE]) {
      ERROR_CHECK_SETOPT(CURLOPT_RANDOM_FILE,
        data->set.str[STRING_SSL_RANDOM_FILE]);
    }
    if(data->set.str[STRING_SSL_EGDSOCKET]) {
      ERROR_CHECK_SETOPT(CURLOPT_EGDSOCKET,
        data->set.str[STRING_SSL_EGDSOCKET]);
    }
    if(data->set.ssl.no_revoke)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
    else if(data->set.ssl.revoke_best_effort)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_OPTIONS, CURLSSLOPT_REVOKE_BEST_EFFORT);
    if(data->set.ssl.fsslctx)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_FUNCTION, data->set.ssl.fsslctx);
    if(data->set.ssl.fsslctxp)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_DATA, data->set.ssl.fsslctxp);
    if(data->set.str[STRING_SSL_EC_CURVES]) {
      ERROR_CHECK_SETOPT(CURLOPT_SSL_EC_CURVES,
        data->set.str[STRING_SSL_EC_CURVES]);















    }

    doh->set.fmultidone = doh_done;
    doh->set.dohfor = data; /* identify for which transfer this is done */
    p->easy = doh;





    /* add this transfer to the multi handle */
    if(curl_multi_add_handle(multi, doh))
      goto error;
  }
  else
    goto error;
  free(nurl);
  return CURLE_OK;







>
>
>





<
<
<
|
|
|
<
|
<
<
<
<
|
|
|
<
<
<
>
>
|
|
<
<
>
>
|
<
<
<
<
<
<
>
|
<
<
|
|

|

|

|

|

|





|



|

<
<
<
<






|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






>
>
>
>
|







280
281
282
283
284
285
286
287
288
289
290
291
292
293
294



295
296
297

298




299
300
301



302
303
304
305


306
307
308






309
310


311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333




334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
    /* enforce HTTPS if not debug */
    ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
#else
    /* in debug mode, also allow http */
    ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTP|CURLPROTO_HTTPS);
#endif
    ERROR_CHECK_SETOPT(CURLOPT_TIMEOUT_MS, (long)timeout_ms);
    ERROR_CHECK_SETOPT(CURLOPT_SHARE, data->share);
    if(data->set.err && data->set.err != stderr)
      ERROR_CHECK_SETOPT(CURLOPT_STDERR, data->set.err);
    if(data->set.verbose)
      ERROR_CHECK_SETOPT(CURLOPT_VERBOSE, 1L);
    if(data->set.no_signal)
      ERROR_CHECK_SETOPT(CURLOPT_NOSIGNAL, 1L);




    ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYHOST,
      data->set.doh_verifyhost ? 2L : 0L);
    ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYPEER,

      data->set.doh_verifypeer ? 1L : 0L);




    ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYSTATUS,
      data->set.doh_verifystatus ? 1L : 0L);




    /* Inherit *some* SSL options from the user's transfer. This is a
       best-guess as to which options are needed for compatibility. #3661

       Note DOH does not inherit the user's proxy server so proxy SSL settings


       have no effect and are not inherited. If that changes then two new
       options should be added to check doh proxy insecure separately,
       CURLOPT_DOH_PROXY_SSL_VERIFYHOST and CURLOPT_DOH_PROXY_SSL_VERIFYPEER.






       */
    if(data->set.ssl.falsestart)


      ERROR_CHECK_SETOPT(CURLOPT_SSL_FALSESTART, 1L);
    if(data->set.str[STRING_SSL_CAFILE]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAINFO,
                         data->set.str[STRING_SSL_CAFILE]);
    }
    if(data->set.str[STRING_SSL_CAPATH]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAPATH,
                         data->set.str[STRING_SSL_CAPATH]);
    }
    if(data->set.str[STRING_SSL_CRLFILE]) {
      ERROR_CHECK_SETOPT(CURLOPT_CRLFILE,
                         data->set.str[STRING_SSL_CRLFILE]);
    }
    if(data->set.ssl.certinfo)
      ERROR_CHECK_SETOPT(CURLOPT_CERTINFO, 1L);
    if(data->set.str[STRING_SSL_RANDOM_FILE]) {
      ERROR_CHECK_SETOPT(CURLOPT_RANDOM_FILE,
                         data->set.str[STRING_SSL_RANDOM_FILE]);
    }
    if(data->set.str[STRING_SSL_EGDSOCKET]) {
      ERROR_CHECK_SETOPT(CURLOPT_EGDSOCKET,
                         data->set.str[STRING_SSL_EGDSOCKET]);
    }




    if(data->set.ssl.fsslctx)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_FUNCTION, data->set.ssl.fsslctx);
    if(data->set.ssl.fsslctxp)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_DATA, data->set.ssl.fsslctxp);
    if(data->set.str[STRING_SSL_EC_CURVES]) {
      ERROR_CHECK_SETOPT(CURLOPT_SSL_EC_CURVES,
                         data->set.str[STRING_SSL_EC_CURVES]);
    }

    {
      long mask =
        (data->set.ssl.enable_beast ?
         CURLSSLOPT_ALLOW_BEAST : 0) |
        (data->set.ssl.no_revoke ?
         CURLSSLOPT_NO_REVOKE : 0) |
        (data->set.ssl.no_partialchain ?
         CURLSSLOPT_NO_PARTIALCHAIN : 0) |
        (data->set.ssl.revoke_best_effort ?
         CURLSSLOPT_REVOKE_BEST_EFFORT : 0) |
        (data->set.ssl.native_ca_store ?
         CURLSSLOPT_NATIVE_CA : 0);
      curl_easy_setopt(doh, CURLOPT_SSL_OPTIONS, mask);
    }

    doh->set.fmultidone = doh_done;
    doh->set.dohfor = data; /* identify for which transfer this is done */
    p->easy = doh;

    /* DOH private_data must be null because the user must have a way to
       distinguish their transfer's handle from DOH handles in user
       callbacks (ie SSL CTX callback). */
    DEBUGASSERT(!data->set.private_data);

    if(curl_multi_add_handle(multi, doh))
      goto error;
  }
  else
    goto error;
  free(nurl);
  return CURLE_OK;
Changes to jni/curl/lib/dynbuf.h.
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save);

/* Dynamic buffer max sizes */
#define DYN_DOH_RESPONSE    3000
#define DYN_DOH_CNAME       256
#define DYN_PAUSE_BUFFER    (64 * 1024 * 1024)
#define DYN_HAXPROXY        2048
#define DYN_HTTP_REQUEST    (128*1024)
#define DYN_H2_HEADERS      (128*1024)
#define DYN_H2_TRAILERS     (128*1024)
#define DYN_APRINTF         8000000
#define DYN_RTSP_REQ_HEADER (64*1024)
#define DYN_TRAILERS        (64*1024)
#define DYN_PROXY_CONNECT_HEADERS 16384
#define DYN_QLOG_NAME       1024







|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save);

/* Dynamic buffer max sizes */
#define DYN_DOH_RESPONSE    3000
#define DYN_DOH_CNAME       256
#define DYN_PAUSE_BUFFER    (64 * 1024 * 1024)
#define DYN_HAXPROXY        2048
#define DYN_HTTP_REQUEST    (1024*1024)
#define DYN_H2_HEADERS      (128*1024)
#define DYN_H2_TRAILERS     (128*1024)
#define DYN_APRINTF         8000000
#define DYN_RTSP_REQ_HEADER (64*1024)
#define DYN_TRAILERS        (64*1024)
#define DYN_PROXY_CONNECT_HEADERS 16384
#define DYN_QLOG_NAME       1024
Changes to jni/curl/lib/easy.c.
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
    dst->set.postfields = dst->set.str[i];
  }

  /* Duplicate mime data. */
  result = Curl_mime_duppart(&dst->set.mimepost, &src->set.mimepost);

  if(src->set.resolve)
    dst->change.resolve = dst->set.resolve;

  return result;
}

/*
 * curl_easy_duphandle() is an external interface to allow duplication of a
 * given input easy handle. The returned handle will be a new working handle







|







806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
    dst->set.postfields = dst->set.str[i];
  }

  /* Duplicate mime data. */
  result = Curl_mime_duppart(&dst->set.mimepost, &src->set.mimepost);

  if(src->set.resolve)
    dst->state.resolve = dst->set.resolve;

  return result;
}

/*
 * curl_easy_duphandle() is an external interface to allow duplication of a
 * given input easy handle. The returned handle will be a new working handle
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
                                        outcurl->cookies,
                                        data->set.cookiesession);
    if(!outcurl->cookies)
      goto fail;
  }

  /* duplicate all values in 'change' */
  if(data->change.cookielist) {
    outcurl->change.cookielist =
      Curl_slist_duplicate(data->change.cookielist);
    if(!outcurl->change.cookielist)
      goto fail;
  }

  if(data->change.url) {
    outcurl->change.url = strdup(data->change.url);
    if(!outcurl->change.url)
      goto fail;
    outcurl->change.url_alloc = TRUE;
  }

  if(data->change.referer) {
    outcurl->change.referer = strdup(data->change.referer);
    if(!outcurl->change.referer)
      goto fail;
    outcurl->change.referer_alloc = TRUE;
  }

  /* Reinitialize an SSL engine for the new handle
   * note: the engine name has already been copied by dupset */
  if(outcurl->set.str[STRING_SSL_ENGINE]) {
    if(Curl_ssl_set_engine(outcurl, outcurl->set.str[STRING_SSL_ENGINE]))
      goto fail;







|
|
|
|



|
|
|

|


|
|
|

|







854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
                                        outcurl->cookies,
                                        data->set.cookiesession);
    if(!outcurl->cookies)
      goto fail;
  }

  /* duplicate all values in 'change' */
  if(data->state.cookielist) {
    outcurl->state.cookielist =
      Curl_slist_duplicate(data->state.cookielist);
    if(!outcurl->state.cookielist)
      goto fail;
  }

  if(data->state.url) {
    outcurl->state.url = strdup(data->state.url);
    if(!outcurl->state.url)
      goto fail;
    outcurl->state.url_alloc = TRUE;
  }

  if(data->state.referer) {
    outcurl->state.referer = strdup(data->state.referer);
    if(!outcurl->state.referer)
      goto fail;
    outcurl->state.referer_alloc = TRUE;
  }

  /* Reinitialize an SSL engine for the new handle
   * note: the engine name has already been copied by dupset */
  if(outcurl->set.str[STRING_SSL_ENGINE]) {
    if(Curl_ssl_set_engine(outcurl, outcurl->set.str[STRING_SSL_ENGINE]))
      goto fail;
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
  /* we reach this point and thus we are OK */

  return outcurl;

  fail:

  if(outcurl) {
    curl_slist_free_all(outcurl->change.cookielist);
    outcurl->change.cookielist = NULL;
    Curl_safefree(outcurl->state.buffer);
    Curl_dyn_free(&outcurl->state.headerb);
    Curl_safefree(outcurl->change.url);
    Curl_safefree(outcurl->change.referer);
    Curl_altsvc_cleanup(&outcurl->asi);
    Curl_hsts_cleanup(&outcurl->hsts);
    Curl_freeset(outcurl);
    free(outcurl);
  }

  return NULL;







|
|


|
|







943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
  /* we reach this point and thus we are OK */

  return outcurl;

  fail:

  if(outcurl) {
    curl_slist_free_all(outcurl->state.cookielist);
    outcurl->state.cookielist = NULL;
    Curl_safefree(outcurl->state.buffer);
    Curl_dyn_free(&outcurl->state.headerb);
    Curl_safefree(outcurl->state.url);
    Curl_safefree(outcurl->state.referer);
    Curl_altsvc_cleanup(&outcurl->asi);
    Curl_hsts_cleanup(&outcurl->hsts);
    Curl_freeset(outcurl);
    free(outcurl);
  }

  return NULL;
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
    /* Not changing any pause state, return */
    DEBUGF(infof(data, "pause: no change, early return\n"));
    return CURLE_OK;
  }

  /* Unpause parts in active mime tree. */
  if((k->keepon & ~newstate & KEEP_SEND_PAUSE) &&
     (data->mstate == CURLM_STATE_PERFORM ||
      data->mstate == CURLM_STATE_TOOFAST) &&
     data->state.fread_func == (curl_read_callback) Curl_mime_read) {
    Curl_mime_unpause(data->state.in);
  }

  /* put it back in the keepon */
  k->keepon = newstate;

  if(!(newstate & KEEP_RECV_PAUSE)) {
    Curl_http2_stream_pause(data, FALSE);

    if(data->state.tempcount) {
      /* there are buffers for sending that can be delivered as the receive
         pausing is lifted! */
      unsigned int i;
      unsigned int count = data->state.tempcount;
      struct tempbuf writebuf[3]; /* there can only be three */
      struct connectdata *conn = data->conn;
      struct Curl_easy *saved_data = NULL;

      /* copy the structs to allow for immediate re-pausing */
      for(i = 0; i < data->state.tempcount; i++) {
        writebuf[i] = data->state.tempwrite[i];
        Curl_dyn_init(&data->state.tempwrite[i].b, DYN_PAUSE_BUFFER);
      }
      data->state.tempcount = 0;

      /* set the connection's current owner */
      if(conn->data != data) {
        saved_data = conn->data;
        conn->data = data;
      }

      for(i = 0; i < count; i++) {
        /* even if one function returns error, this loops through and frees
           all buffers */
        if(!result)
          result = Curl_client_write(data, writebuf[i].type,
                                     Curl_dyn_ptr(&writebuf[i].b),
                                     Curl_dyn_len(&writebuf[i].b));
        Curl_dyn_free(&writebuf[i].b);
      }

      /* recover previous owner of the connection */
      if(saved_data)
        conn->data = saved_data;

      if(result)
        return result;
    }
  }

  /* if there's no error and we're not pausing both directions, we want
     to have this handle checked soon */







|
|
















<
<








<
<
<
<
<
<










<
<
<
<







1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054


1055
1056
1057
1058
1059
1060
1061
1062






1063
1064
1065
1066
1067
1068
1069
1070
1071
1072




1073
1074
1075
1076
1077
1078
1079
    /* Not changing any pause state, return */
    DEBUGF(infof(data, "pause: no change, early return\n"));
    return CURLE_OK;
  }

  /* Unpause parts in active mime tree. */
  if((k->keepon & ~newstate & KEEP_SEND_PAUSE) &&
     (data->mstate == MSTATE_PERFORMING ||
      data->mstate == MSTATE_RATELIMITING) &&
     data->state.fread_func == (curl_read_callback) Curl_mime_read) {
    Curl_mime_unpause(data->state.in);
  }

  /* put it back in the keepon */
  k->keepon = newstate;

  if(!(newstate & KEEP_RECV_PAUSE)) {
    Curl_http2_stream_pause(data, FALSE);

    if(data->state.tempcount) {
      /* there are buffers for sending that can be delivered as the receive
         pausing is lifted! */
      unsigned int i;
      unsigned int count = data->state.tempcount;
      struct tempbuf writebuf[3]; /* there can only be three */



      /* copy the structs to allow for immediate re-pausing */
      for(i = 0; i < data->state.tempcount; i++) {
        writebuf[i] = data->state.tempwrite[i];
        Curl_dyn_init(&data->state.tempwrite[i].b, DYN_PAUSE_BUFFER);
      }
      data->state.tempcount = 0;







      for(i = 0; i < count; i++) {
        /* even if one function returns error, this loops through and frees
           all buffers */
        if(!result)
          result = Curl_client_write(data, writebuf[i].type,
                                     Curl_dyn_ptr(&writebuf[i].b),
                                     Curl_dyn_len(&writebuf[i].b));
        Curl_dyn_free(&writebuf[i].b);
      }





      if(result)
        return result;
    }
  }

  /* if there's no error and we're not pausing both directions, we want
     to have this handle checked soon */
Changes to jni/curl/lib/easyoptions.c.
74
75
76
77
78
79
80



81
82
83
84
85
86
87
  {"DNS_CACHE_TIMEOUT", CURLOPT_DNS_CACHE_TIMEOUT, CURLOT_LONG, 0},
  {"DNS_INTERFACE", CURLOPT_DNS_INTERFACE, CURLOT_STRING, 0},
  {"DNS_LOCAL_IP4", CURLOPT_DNS_LOCAL_IP4, CURLOT_STRING, 0},
  {"DNS_LOCAL_IP6", CURLOPT_DNS_LOCAL_IP6, CURLOT_STRING, 0},
  {"DNS_SERVERS", CURLOPT_DNS_SERVERS, CURLOT_STRING, 0},
  {"DNS_SHUFFLE_ADDRESSES", CURLOPT_DNS_SHUFFLE_ADDRESSES, CURLOT_LONG, 0},
  {"DNS_USE_GLOBAL_CACHE", CURLOPT_DNS_USE_GLOBAL_CACHE, CURLOT_LONG, 0},



  {"DOH_URL", CURLOPT_DOH_URL, CURLOT_STRING, 0},
  {"EGDSOCKET", CURLOPT_EGDSOCKET, CURLOT_STRING, 0},
  {"ENCODING", CURLOPT_ACCEPT_ENCODING, CURLOT_STRING, CURLOT_FLAG_ALIAS},
  {"ERRORBUFFER", CURLOPT_ERRORBUFFER, CURLOT_OBJECT, 0},
  {"EXPECT_100_TIMEOUT_MS", CURLOPT_EXPECT_100_TIMEOUT_MS, CURLOT_LONG, 0},
  {"FAILONERROR", CURLOPT_FAILONERROR, CURLOT_LONG, 0},
  {"FILE", CURLOPT_WRITEDATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},







>
>
>







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  {"DNS_CACHE_TIMEOUT", CURLOPT_DNS_CACHE_TIMEOUT, CURLOT_LONG, 0},
  {"DNS_INTERFACE", CURLOPT_DNS_INTERFACE, CURLOT_STRING, 0},
  {"DNS_LOCAL_IP4", CURLOPT_DNS_LOCAL_IP4, CURLOT_STRING, 0},
  {"DNS_LOCAL_IP6", CURLOPT_DNS_LOCAL_IP6, CURLOT_STRING, 0},
  {"DNS_SERVERS", CURLOPT_DNS_SERVERS, CURLOT_STRING, 0},
  {"DNS_SHUFFLE_ADDRESSES", CURLOPT_DNS_SHUFFLE_ADDRESSES, CURLOT_LONG, 0},
  {"DNS_USE_GLOBAL_CACHE", CURLOPT_DNS_USE_GLOBAL_CACHE, CURLOT_LONG, 0},
  {"DOH_SSL_VERIFYHOST", CURLOPT_DOH_SSL_VERIFYHOST, CURLOT_LONG, 0},
  {"DOH_SSL_VERIFYPEER", CURLOPT_DOH_SSL_VERIFYPEER, CURLOT_LONG, 0},
  {"DOH_SSL_VERIFYSTATUS", CURLOPT_DOH_SSL_VERIFYSTATUS, CURLOT_LONG, 0},
  {"DOH_URL", CURLOPT_DOH_URL, CURLOT_STRING, 0},
  {"EGDSOCKET", CURLOPT_EGDSOCKET, CURLOT_STRING, 0},
  {"ENCODING", CURLOPT_ACCEPT_ENCODING, CURLOT_STRING, CURLOT_FLAG_ALIAS},
  {"ERRORBUFFER", CURLOPT_ERRORBUFFER, CURLOT_OBJECT, 0},
  {"EXPECT_100_TIMEOUT_MS", CURLOPT_EXPECT_100_TIMEOUT_MS, CURLOT_LONG, 0},
  {"FAILONERROR", CURLOPT_FAILONERROR, CURLOT_LONG, 0},
  {"FILE", CURLOPT_WRITEDATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
345
346
347
348
349
350
351
352
353
354
#ifdef DEBUGBUILD
/*
 * Curl_easyopts_check() is a debug-only function that returns non-zero
 * if this source file is not in sync with the options listed in curl/curl.h
 */
int Curl_easyopts_check(void)
{
  return ((CURLOPT_LASTENTRY%10000) != (305 + 1));
}
#endif







|


348
349
350
351
352
353
354
355
356
357
#ifdef DEBUGBUILD
/*
 * Curl_easyopts_check() is a debug-only function that returns non-zero
 * if this source file is not in sync with the options listed in curl/curl.h
 */
int Curl_easyopts_check(void)
{
  return ((CURLOPT_LASTENTRY%10000) != (308 + 1));
}
#endif
Changes to jni/curl/lib/ftp.c.
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
 */
static CURLcode ftp_state_prepare_transfer(struct Curl_easy *data)
{
  CURLcode result = CURLE_OK;
  struct FTP *ftp = data->req.p.ftp;
  struct connectdata *conn = data->conn;

  if(ftp->transfer != FTPTRANSFER_BODY) {
    /* doesn't transfer any data */

    /* still possibly do PRE QUOTE jobs */
    state(data, FTP_RETR_PREQUOTE);
    result = ftp_state_quote(data, TRUE, FTP_RETR_PREQUOTE);
  }
  else if(data->set.ftp_use_port) {
    /* We have chosen to use the PORT (or similar) command */
    result = ftp_state_use_port(data, EPRT);
  }
  else {
    /* We have chosen (this is default) to use the PASV (or similar) command */
    if(data->set.ftp_use_pret) {
      /* The user has requested that we send a PRET command
         to prepare the server for the upcoming PASV */
      struct ftp_conn *ftpc = &conn->proto.ftpc;
      if(!conn->proto.ftpc.file)
        result = Curl_pp_sendf(data, &ftpc->pp, "PRET %s",
                               data->set.str[STRING_CUSTOMREQUEST]?
                               data->set.str[STRING_CUSTOMREQUEST]:
                               (data->set.ftp_list_only?"NLST":"LIST"));
      else if(data->set.upload)
        result = Curl_pp_sendf(data, &ftpc->pp, "PRET STOR %s",
                               conn->proto.ftpc.file);
      else
        result = Curl_pp_sendf(data, &ftpc->pp, "PRET RETR %s",
                               conn->proto.ftpc.file);
      if(!result)







|




















|







1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
 */
static CURLcode ftp_state_prepare_transfer(struct Curl_easy *data)
{
  CURLcode result = CURLE_OK;
  struct FTP *ftp = data->req.p.ftp;
  struct connectdata *conn = data->conn;

  if(ftp->transfer != PPTRANSFER_BODY) {
    /* doesn't transfer any data */

    /* still possibly do PRE QUOTE jobs */
    state(data, FTP_RETR_PREQUOTE);
    result = ftp_state_quote(data, TRUE, FTP_RETR_PREQUOTE);
  }
  else if(data->set.ftp_use_port) {
    /* We have chosen to use the PORT (or similar) command */
    result = ftp_state_use_port(data, EPRT);
  }
  else {
    /* We have chosen (this is default) to use the PASV (or similar) command */
    if(data->set.ftp_use_pret) {
      /* The user has requested that we send a PRET command
         to prepare the server for the upcoming PASV */
      struct ftp_conn *ftpc = &conn->proto.ftpc;
      if(!conn->proto.ftpc.file)
        result = Curl_pp_sendf(data, &ftpc->pp, "PRET %s",
                               data->set.str[STRING_CUSTOMREQUEST]?
                               data->set.str[STRING_CUSTOMREQUEST]:
                               (data->state.list_only?"NLST":"LIST"));
      else if(data->set.upload)
        result = Curl_pp_sendf(data, &ftpc->pp, "PRET STOR %s",
                               conn->proto.ftpc.file);
      else
        result = Curl_pp_sendf(data, &ftpc->pp, "PRET RETR %s",
                               conn->proto.ftpc.file);
      if(!result)
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
static CURLcode ftp_state_rest(struct Curl_easy *data,
                               struct connectdata *conn)
{
  CURLcode result = CURLE_OK;
  struct FTP *ftp = data->req.p.ftp;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  if((ftp->transfer != FTPTRANSFER_BODY) && ftpc->file) {
    /* if a "head"-like request is being made (on a file) */

    /* Determine if server can respond to REST command and therefore
       whether it supports range */
    result = Curl_pp_sendf(data, &ftpc->pp, "REST %d", 0);
    if(!result)
      state(data, FTP_REST);







|







1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
static CURLcode ftp_state_rest(struct Curl_easy *data,
                               struct connectdata *conn)
{
  CURLcode result = CURLE_OK;
  struct FTP *ftp = data->req.p.ftp;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  if((ftp->transfer != PPTRANSFER_BODY) && ftpc->file) {
    /* if a "head"-like request is being made (on a file) */

    /* Determine if server can respond to REST command and therefore
       whether it supports range */
    result = Curl_pp_sendf(data, &ftpc->pp, "REST %d", 0);
    if(!result)
      state(data, FTP_REST);
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
static CURLcode ftp_state_size(struct Curl_easy *data,
                               struct connectdata *conn)
{
  CURLcode result = CURLE_OK;
  struct FTP *ftp = data->req.p.ftp;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  if((ftp->transfer == FTPTRANSFER_INFO) && ftpc->file) {
    /* if a "head"-like request is being made (on a file) */

    /* we know ftpc->file is a valid pointer to a file name */
    result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
    if(!result)
      state(data, FTP_SIZE);
  }







|







1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
static CURLcode ftp_state_size(struct Curl_easy *data,
                               struct connectdata *conn)
{
  CURLcode result = CURLE_OK;
  struct FTP *ftp = data->req.p.ftp;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  if((ftp->transfer == PPTRANSFER_INFO) && ftpc->file) {
    /* if a "head"-like request is being made (on a file) */

    /* we know ftpc->file is a valid pointer to a file name */
    result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
    if(!result)
      state(data, FTP_SIZE);
  }
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
    else
      free(rawPath);
  }

  cmd = aprintf("%s%s%s",
                data->set.str[STRING_CUSTOMREQUEST]?
                data->set.str[STRING_CUSTOMREQUEST]:
                (data->set.ftp_list_only?"NLST":"LIST"),
                lstArg? " ": "",
                lstArg? lstArg: "");
  free(lstArg);

  if(!cmd)
    return CURLE_OUT_OF_MEMORY;








|







1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
    else
      free(rawPath);
  }

  cmd = aprintf("%s%s%s",
                data->set.str[STRING_CUSTOMREQUEST]?
                data->set.str[STRING_CUSTOMREQUEST]:
                (data->state.list_only?"NLST":"LIST"),
                lstArg? " ": "",
                lstArg? lstArg: "");
  free(lstArg);

  if(!cmd)
    return CURLE_OUT_OF_MEMORY;

1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
  struct connectdata *conn = data->conn;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  /* If we have selected NOBODY and HEADER, it means that we only want file
     information. Which in FTP can't be much more than the file size and
     date. */
  if(data->set.opt_no_body && ftpc->file &&
     ftp_need_type(conn, data->set.prefer_ascii)) {
    /* The SIZE command is _not_ RFC 959 specified, and therefore many servers
       may not support it! It is however the only way we have to get a file's
       size! */

    ftp->transfer = FTPTRANSFER_INFO;
    /* this means no actual transfer will be made */

    /* Some servers return different sizes for different modes, and thus we
       must set the proper type before we check the size */
    result = ftp_nb_type(data, conn, data->set.prefer_ascii, FTP_TYPE);
    if(result)
      return result;
  }
  else
    result = ftp_state_size(data, conn);

  return result;







|




|




|







1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
  struct connectdata *conn = data->conn;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  /* If we have selected NOBODY and HEADER, it means that we only want file
     information. Which in FTP can't be much more than the file size and
     date. */
  if(data->set.opt_no_body && ftpc->file &&
     ftp_need_type(conn, data->state.prefer_ascii)) {
    /* The SIZE command is _not_ RFC 959 specified, and therefore many servers
       may not support it! It is however the only way we have to get a file's
       size! */

    ftp->transfer = PPTRANSFER_INFO;
    /* this means no actual transfer will be made */

    /* Some servers return different sizes for different modes, and thus we
       must set the proper type before we check the size */
    result = ftp_nb_type(data, conn, data->state.prefer_ascii, FTP_TYPE);
    if(result)
      return result;
  }
  else
    result = ftp_state_size(data, conn);

  return result;
1574
1575
1576
1577
1578
1579
1580

1581
1582
1583
1584
1585
1586
1587
static CURLcode ftp_state_ul_setup(struct Curl_easy *data,
                                   bool sizechecked)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct FTP *ftp = data->req.p.ftp;
  struct ftp_conn *ftpc = &conn->proto.ftpc;


  if((data->state.resume_from && !sizechecked) ||
     ((data->state.resume_from > 0) && sizechecked)) {
    /* we're about to continue the uploading of a file */
    /* 1. get already existing file's size. We use the SIZE command for this
       which may not exist in the server!  The SIZE command is not in
       RFC959. */







>







1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
static CURLcode ftp_state_ul_setup(struct Curl_easy *data,
                                   bool sizechecked)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct FTP *ftp = data->req.p.ftp;
  struct ftp_conn *ftpc = &conn->proto.ftpc;
  bool append = data->set.remote_append;

  if((data->state.resume_from && !sizechecked) ||
     ((data->state.resume_from > 0) && sizechecked)) {
    /* we're about to continue the uploading of a file */
    /* 1. get already existing file's size. We use the SIZE command for this
       which may not exist in the server!  The SIZE command is not in
       RFC959. */
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
      result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
      if(!result)
        state(data, FTP_STOR_SIZE);
      return result;
    }

    /* enable append */
    data->set.ftp_append = TRUE;

    /* Let's read off the proper amount of bytes from the input. */
    if(conn->seek_func) {
      Curl_set_in_callback(data, true);
      seekerr = conn->seek_func(conn->seek_client, data->state.resume_from,
                                SEEK_SET);
      Curl_set_in_callback(data, false);







|







1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
      result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
      if(!result)
        state(data, FTP_STOR_SIZE);
      return result;
    }

    /* enable append */
    append = TRUE;

    /* Let's read off the proper amount of bytes from the input. */
    if(conn->seek_func) {
      Curl_set_in_callback(data, true);
      seekerr = conn->seek_func(conn->seek_client, data->state.resume_from,
                                SEEK_SET);
      Curl_set_in_callback(data, false);
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
        infof(data, "File already completely uploaded\n");

        /* no data to transfer */
        Curl_setup_transfer(data, -1, -1, FALSE, -1);

        /* Set ->transfer so that we won't get any error in
         * ftp_done() because we didn't transfer anything! */
        ftp->transfer = FTPTRANSFER_NONE;

        state(data, FTP_STOP);
        return CURLE_OK;
      }
    }
    /* we've passed, proceed as normal */
  } /* resume_from */

  result = Curl_pp_sendf(data, &ftpc->pp,
                         data->set.ftp_append?"APPE %s":"STOR %s",
                         ftpc->file);
  if(!result)
    state(data, FTP_STOR);

  return result;
}








|








|
<







1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665

1666
1667
1668
1669
1670
1671
1672
        infof(data, "File already completely uploaded\n");

        /* no data to transfer */
        Curl_setup_transfer(data, -1, -1, FALSE, -1);

        /* Set ->transfer so that we won't get any error in
         * ftp_done() because we didn't transfer anything! */
        ftp->transfer = PPTRANSFER_NONE;

        state(data, FTP_STOP);
        return CURLE_OK;
      }
    }
    /* we've passed, proceed as normal */
  } /* resume_from */

  result = Curl_pp_sendf(data, &ftpc->pp, append?"APPE %s":"STOR %s",

                         ftpc->file);
  if(!result)
    state(data, FTP_STOR);

  return result;
}

1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756






1757
1758
1759
1760
1761
1762
1763
    /* No more quote to send, continue to ... */
    switch(instate) {
    case FTP_QUOTE:
    default:
      result = ftp_state_cwd(data, conn);
      break;
    case FTP_RETR_PREQUOTE:
      if(ftp->transfer != FTPTRANSFER_BODY)
        state(data, FTP_STOP);
      else {
        if(ftpc->known_filesize != -1) {
          Curl_pgrsSetDownloadSize(data, ftpc->known_filesize);
          result = ftp_state_retr(data, ftpc->known_filesize);
        }
        else {
          if(data->set.ignorecl) {
            /* This code is to support download of growing files.  It prevents
               the state machine from requesting the file size from the
               server.  With an unknown file size the download continues until
               the server terminates it, otherwise the client stops if the
               received byte count exceeds the reported file size.  Set option
               CURLOPT_IGNORE_CONTENT_LENGTH to 1 to enable this behavior.*/






            result = Curl_pp_sendf(data, &ftpc->pp, "RETR %s", ftpc->file);
            if(!result)
              state(data, FTP_RETR);
          }
          else {
            result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
            if(!result)







|







|
|
|
|
|
|
|
>
>
>
>
>
>







1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
    /* No more quote to send, continue to ... */
    switch(instate) {
    case FTP_QUOTE:
    default:
      result = ftp_state_cwd(data, conn);
      break;
    case FTP_RETR_PREQUOTE:
      if(ftp->transfer != PPTRANSFER_BODY)
        state(data, FTP_STOP);
      else {
        if(ftpc->known_filesize != -1) {
          Curl_pgrsSetDownloadSize(data, ftpc->known_filesize);
          result = ftp_state_retr(data, ftpc->known_filesize);
        }
        else {
          if(data->set.ignorecl || data->state.prefer_ascii) {
            /* 'ignorecl' is used to support download of growing files.  It
               prevents the state machine from requesting the file size from
               the server.  With an unknown file size the download continues
               until the server terminates it, otherwise the client stops if
               the received byte count exceeds the reported file size.  Set
               option CURLOPT_IGNORE_CONTENT_LENGTH to 1 to enable this
               behavior.

               In addition: asking for the size for 'TYPE A' transfers is not
               constructive since servers don't report the converted size. So
               skip it.
            */
            result = Curl_pp_sendf(data, &ftpc->pp, "RETR %s", ftpc->file);
            if(!result)
              state(data, FTP_RETR);
          }
          else {
            result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
            if(!result)
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
  if(data->set.timecondition) {
    if((data->info.filetime > 0) && (data->set.timevalue > 0)) {
      switch(data->set.timecondition) {
      case CURL_TIMECOND_IFMODSINCE:
      default:
        if(data->info.filetime <= data->set.timevalue) {
          infof(data, "The requested document is not new enough\n");
          ftp->transfer = FTPTRANSFER_NONE; /* mark to not transfer data */
          data->info.timecond = TRUE;
          state(data, FTP_STOP);
          return CURLE_OK;
        }
        break;
      case CURL_TIMECOND_IFUNMODSINCE:
        if(data->info.filetime > data->set.timevalue) {
          infof(data, "The requested document is not old enough\n");
          ftp->transfer = FTPTRANSFER_NONE; /* mark to not transfer data */
          data->info.timecond = TRUE;
          state(data, FTP_STOP);
          return CURLE_OK;
        }
        break;
      } /* switch */
    }







|








|







2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
  if(data->set.timecondition) {
    if((data->info.filetime > 0) && (data->set.timevalue > 0)) {
      switch(data->set.timecondition) {
      case CURL_TIMECOND_IFMODSINCE:
      default:
        if(data->info.filetime <= data->set.timevalue) {
          infof(data, "The requested document is not new enough\n");
          ftp->transfer = PPTRANSFER_NONE; /* mark to not transfer data */
          data->info.timecond = TRUE;
          state(data, FTP_STOP);
          return CURLE_OK;
        }
        break;
      case CURL_TIMECOND_IFUNMODSINCE:
        if(data->info.filetime > data->set.timevalue) {
          infof(data, "The requested document is not old enough\n");
          ftp->transfer = PPTRANSFER_NONE; /* mark to not transfer data */
          data->info.timecond = TRUE;
          state(data, FTP_STOP);
          return CURLE_OK;
        }
        break;
      } /* switch */
    }
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
    if(ftp->downloadsize == 0) {
      /* no data to transfer */
      Curl_setup_transfer(data, -1, -1, FALSE, -1);
      infof(data, "File already completely downloaded\n");

      /* Set ->transfer so that we won't get any error in ftp_done()
       * because we didn't transfer the any file */
      ftp->transfer = FTPTRANSFER_NONE;
      state(data, FTP_STOP);
      return CURLE_OK;
    }

    /* Set resume file transfer offset */
    infof(data, "Instructs server to resume from offset %"
          CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from);







|







2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
    if(ftp->downloadsize == 0) {
      /* no data to transfer */
      Curl_setup_transfer(data, -1, -1, FALSE, -1);
      infof(data, "File already completely downloaded\n");

      /* Set ->transfer so that we won't get any error in ftp_done()
       * because we didn't transfer the any file */
      ftp->transfer = PPTRANSFER_NONE;
      state(data, FTP_STOP);
      return CURLE_OK;
    }

    /* Set resume file transfer offset */
    infof(data, "Instructs server to resume from offset %"
          CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from);
2299
2300
2301
2302
2303
2304
2305



2306
2307

2308
2309
2310
2311
2312
2313
2314
    else
      fdigit = start;
    /* ignores parsing errors, which will make the size remain unknown */
    (void)curlx_strtoofft(fdigit, NULL, 0, &filesize);

  }
  else if(ftpcode == 550) { /* "No such file or directory" */



    failf(data, "The file does not exist");
    return CURLE_REMOTE_FILE_NOT_FOUND;

  }

  if(instate == FTP_SIZE) {
#ifdef CURL_FTP_HTTPSTYLE_HEAD
    if(-1 != filesize) {
      char clbuf[128];
      msnprintf(clbuf, sizeof(clbuf),







>
>
>
|
|
>







2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
    else
      fdigit = start;
    /* ignores parsing errors, which will make the size remain unknown */
    (void)curlx_strtoofft(fdigit, NULL, 0, &filesize);

  }
  else if(ftpcode == 550) { /* "No such file or directory" */
    /* allow a SIZE failure for (resumed) uploads, when probing what command
       to use */
    if(instate != FTP_STOR_SIZE) {
      failf(data, "The file does not exist");
      return CURLE_REMOTE_FILE_NOT_FOUND;
    }
  }

  if(instate == FTP_SIZE) {
#ifdef CURL_FTP_HTTPSTYLE_HEAD
    if(-1 != filesize) {
      char clbuf[128];
      msnprintf(clbuf, sizeof(clbuf),
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
     * that (stupid) behavior, we attempt to parse the RETR response even if
     * the SIZE returned size zero.
     *
     * Debugging help from Salvatore Sorrentino on February 26, 2003.
     */

    if((instate != FTP_LIST) &&
       !data->set.prefer_ascii &&
       (ftp->downloadsize < 1)) {
      /*
       * It seems directory listings either don't show the size or very
       * often uses size 0 anyway. ASCII transfers may very well turn out
       * that the transferred amount of data is not the same as this line
       * tells, why using this number in those cases only confuses us.
       *







|







2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
     * that (stupid) behavior, we attempt to parse the RETR response even if
     * the SIZE returned size zero.
     *
     * Debugging help from Salvatore Sorrentino on February 26, 2003.
     */

    if((instate != FTP_LIST) &&
       !data->state.prefer_ascii &&
       (ftp->downloadsize < 1)) {
      /*
       * It seems directory listings either don't show the size or very
       * often uses size 0 anyway. ASCII transfers may very well turn out
       * that the transferred amount of data is not the same as this line
       * tells, why using this number in those cases only confuses us.
       *
2472
2473
2474
2475
2476
2477
2478
2479

2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
            bytes = NULL;
            break;
          }
          /* one more estep backwards */
          bytes--;
        }
        /* if we have nothing but digits: */
        if(bytes++) {

          /* get the number! */
          (void)curlx_strtoofft(bytes, NULL, 0, &size);
        }
      }
    }
    else if(ftp->downloadsize > -1)
      size = ftp->downloadsize;

    if(size > data->req.maxdownload && data->req.maxdownload > 0)
      size = data->req.size = data->req.maxdownload;
    else if((instate != FTP_LIST) && (data->set.prefer_ascii))
      size = -1; /* kludge for servers that understate ASCII mode file size */

    infof(data, "Maxdownload = %" CURL_FORMAT_CURL_OFF_T "\n",
          data->req.maxdownload);

    if(instate != FTP_LIST)
      infof(data, "Getting file with size: %" CURL_FORMAT_CURL_OFF_T "\n",







|
>










|







2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
            bytes = NULL;
            break;
          }
          /* one more estep backwards */
          bytes--;
        }
        /* if we have nothing but digits: */
        if(bytes) {
          ++bytes;
          /* get the number! */
          (void)curlx_strtoofft(bytes, NULL, 0, &size);
        }
      }
    }
    else if(ftp->downloadsize > -1)
      size = ftp->downloadsize;

    if(size > data->req.maxdownload && data->req.maxdownload > 0)
      size = data->req.size = data->req.maxdownload;
    else if((instate != FTP_LIST) && (data->state.prefer_ascii))
      size = -1; /* kludge for servers that understate ASCII mode file size */

    infof(data, "Maxdownload = %" CURL_FORMAT_CURL_OFF_T "\n",
          data->req.maxdownload);

    if(instate != FTP_LIST)
      infof(data, "Getting file with size: %" CURL_FORMAT_CURL_OFF_T "\n",
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
    }
    else
      return InitiateTransfer(data);
  }
  else {
    if((instate == FTP_LIST) && (ftpcode == 450)) {
      /* simply no matching files in the dir listing */
      ftp->transfer = FTPTRANSFER_NONE; /* don't download anything */
      state(data, FTP_STOP); /* this phase is over */
    }
    else {
      failf(data, "RETR response: %03d", ftpcode);
      return instate == FTP_RETR && ftpcode == 550?
        CURLE_REMOTE_FILE_NOT_FOUND:
        CURLE_FTP_COULDNT_RETR_FILE;







|







2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
    }
    else
      return InitiateTransfer(data);
  }
  else {
    if((instate == FTP_LIST) && (ftpcode == 450)) {
      /* simply no matching files in the dir listing */
      ftp->transfer = PPTRANSFER_NONE; /* don't download anything */
      state(data, FTP_STOP); /* this phase is over */
    }
    else {
      failf(data, "RETR response: %03d", ftpcode);
      return instate == FTP_RETR && ftpcode == 550?
        CURLE_REMOTE_FILE_NOT_FOUND:
        CURLE_FTP_COULDNT_RETR_FILE;
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301

      /* Note that we keep "use" set to TRUE since that (next) connection is
         still requested to use SSL */
    }
    close_secondarysocket(data, conn);
  }

  if(!result && (ftp->transfer == FTPTRANSFER_BODY) && ftpc->ctl_valid &&
     pp->pending_resp && !premature) {
    /*
     * Let's see what the server says about the transfer we just performed,
     * but lower the timeout as sometimes this connection has died while the
     * data has been transferred. This happens when doing through NATs etc that
     * abandon old silent connections.
     */







|







3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312

      /* Note that we keep "use" set to TRUE since that (next) connection is
         still requested to use SSL */
    }
    close_secondarysocket(data, conn);
  }

  if(!result && (ftp->transfer == PPTRANSFER_BODY) && ftpc->ctl_valid &&
     pp->pending_resp && !premature) {
    /*
     * Let's see what the server says about the transfer we just performed,
     * but lower the timeout as sometimes this connection has died while the
     * data has been transferred. This happens when doing through NATs etc that
     * abandon old silent connections.
     */
3310
3311
3312
3313
3314
3315
3316
3317

3318

3319
3320
3321
3322
3323
3324
3325

    if(!nread && (CURLE_OPERATION_TIMEDOUT == result)) {
      failf(data, "control connection looks dead");
      ftpc->ctl_valid = FALSE; /* mark control connection as bad */
      connclose(conn, "Timeout or similar in FTP DONE operation"); /* close */
    }

    if(result)

      return result;


    if(ftpc->dont_check && data->req.maxdownload > 0) {
      /* we have just sent ABOR and there is no reliable way to check if it was
       * successful or not; we have to close the connection now */
      infof(data, "partial download completed, closing connection\n");
      connclose(conn, "Partial download with no ability to check");
      return result;







|
>

>







3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338

    if(!nread && (CURLE_OPERATION_TIMEDOUT == result)) {
      failf(data, "control connection looks dead");
      ftpc->ctl_valid = FALSE; /* mark control connection as bad */
      connclose(conn, "Timeout or similar in FTP DONE operation"); /* close */
    }

    if(result) {
      Curl_safefree(ftp->pathalloc);
      return result;
    }

    if(ftpc->dont_check && data->req.maxdownload > 0) {
      /* we have just sent ABOR and there is no reliable way to check if it was
       * successful or not; we have to close the connection now */
      infof(data, "partial download completed, closing connection\n");
      connclose(conn, "Partial download with no ability to check");
      return result;
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
    /* the response code from the transfer showed an error already so no
       use checking further */
    ;
  else if(data->set.upload) {
    if((-1 != data->state.infilesize) &&
       (data->state.infilesize != data->req.writebytecount) &&
       !data->set.crlf &&
       (ftp->transfer == FTPTRANSFER_BODY)) {
      failf(data, "Uploaded unaligned file size (%" CURL_FORMAT_CURL_OFF_T
            " out of %" CURL_FORMAT_CURL_OFF_T " bytes)",
            data->req.bytecount, data->state.infilesize);
      result = CURLE_PARTIAL_FILE;
    }
  }
  else {







|







3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
    /* the response code from the transfer showed an error already so no
       use checking further */
    ;
  else if(data->set.upload) {
    if((-1 != data->state.infilesize) &&
       (data->state.infilesize != data->req.writebytecount) &&
       !data->set.crlf &&
       (ftp->transfer == PPTRANSFER_BODY)) {
      failf(data, "Uploaded unaligned file size (%" CURL_FORMAT_CURL_OFF_T
            " out of %" CURL_FORMAT_CURL_OFF_T " bytes)",
            data->req.bytecount, data->state.infilesize);
      result = CURLE_PARTIAL_FILE;
    }
  }
  else {
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
            (data->req.size>0)) {
      failf(data, "No data was received!");
      result = CURLE_FTP_COULDNT_RETR_FILE;
    }
  }

  /* clear these for next connection */
  ftp->transfer = FTPTRANSFER_BODY;
  ftpc->dont_check = FALSE;

  /* Send any post-transfer QUOTE strings? */
  if(!status && !result && !premature && data->set.postquote)
    result = ftp_sendquote(data, conn, data->set.postquote);
  Curl_safefree(ftp->pathalloc);
  return result;







|







3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
            (data->req.size>0)) {
      failf(data, "No data was received!");
      result = CURLE_FTP_COULDNT_RETR_FILE;
    }
  }

  /* clear these for next connection */
  ftp->transfer = PPTRANSFER_BODY;
  ftpc->dont_check = FALSE;

  /* Send any post-transfer QUOTE strings? */
  if(!status && !result && !premature && data->set.postquote)
    result = ftp_sendquote(data, conn, data->set.postquote);
  Curl_safefree(ftp->pathalloc);
  return result;
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604

    /* if we reach the end of the FTP state machine here, *complete will be
       TRUE but so is ftpc->wait_data_conn, which says we need to wait for the
       data connection and therefore we're not actually complete */
    *completep = 0;
  }

  if(ftp->transfer <= FTPTRANSFER_INFO) {
    /* a transfer is about to take place, or if not a file name was given
       so we'll do a SIZE on it later and then we need the right TYPE first */

    if(ftpc->wait_data_conn == TRUE) {
      bool serv_conned;

      result = ReceivedServerConnect(data, &serv_conned);







|







3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617

    /* if we reach the end of the FTP state machine here, *complete will be
       TRUE but so is ftpc->wait_data_conn, which says we need to wait for the
       data connection and therefore we're not actually complete */
    *completep = 0;
  }

  if(ftp->transfer <= PPTRANSFER_INFO) {
    /* a transfer is about to take place, or if not a file name was given
       so we'll do a SIZE on it later and then we need the right TYPE first */

    if(ftpc->wait_data_conn == TRUE) {
      bool serv_conned;

      result = ReceivedServerConnect(data, &serv_conned);
3616
3617
3618
3619
3620
3621
3622
3623

3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
          return result;

        *completep = 1; /* this state is now complete when the server has
                           connected back to us */
      }
    }
    else if(data->set.upload) {
      result = ftp_nb_type(data, conn, data->set.prefer_ascii, FTP_STOR_TYPE);

      if(result)
        return result;

      result = ftp_multi_statemach(data, &complete);
      /* ftpc->wait_data_conn is always false here */
      *completep = (int)complete;
    }
    else {
      /* download */
      ftp->downloadsize = -1; /* unknown as of yet */

      result = Curl_range(data);

      if(result == CURLE_OK && data->req.maxdownload >= 0) {
        /* Don't check for successful transfer */
        ftpc->dont_check = TRUE;
      }

      if(result)
        ;
      else if(data->set.ftp_list_only || !ftpc->file) {
        /* The specified path ends with a slash, and therefore we think this
           is a directory that is requested, use LIST. But before that we
           need to set ASCII transfer mode. */

        /* But only if a body transfer was requested. */
        if(ftp->transfer == FTPTRANSFER_BODY) {
          result = ftp_nb_type(data, conn, TRUE, FTP_LIST_TYPE);
          if(result)
            return result;
        }
        /* otherwise just fall through */
      }
      else {
        result = ftp_nb_type(data, conn, data->set.prefer_ascii,
                             FTP_RETR_TYPE);
        if(result)
          return result;
      }

      result = ftp_multi_statemach(data, &complete);
      *completep = (int)complete;







|
>




















|





|







|







3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
          return result;

        *completep = 1; /* this state is now complete when the server has
                           connected back to us */
      }
    }
    else if(data->set.upload) {
      result = ftp_nb_type(data, conn, data->state.prefer_ascii,
                           FTP_STOR_TYPE);
      if(result)
        return result;

      result = ftp_multi_statemach(data, &complete);
      /* ftpc->wait_data_conn is always false here */
      *completep = (int)complete;
    }
    else {
      /* download */
      ftp->downloadsize = -1; /* unknown as of yet */

      result = Curl_range(data);

      if(result == CURLE_OK && data->req.maxdownload >= 0) {
        /* Don't check for successful transfer */
        ftpc->dont_check = TRUE;
      }

      if(result)
        ;
      else if(data->state.list_only || !ftpc->file) {
        /* The specified path ends with a slash, and therefore we think this
           is a directory that is requested, use LIST. But before that we
           need to set ASCII transfer mode. */

        /* But only if a body transfer was requested. */
        if(ftp->transfer == PPTRANSFER_BODY) {
          result = ftp_nb_type(data, conn, TRUE, FTP_LIST_TYPE);
          if(result)
            return result;
        }
        /* otherwise just fall through */
      }
      else {
        result = ftp_nb_type(data, conn, data->state.prefer_ascii,
                             FTP_RETR_TYPE);
        if(result)
          return result;
      }

      result = ftp_multi_statemach(data, &complete);
      *completep = (int)complete;
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
  struct connectdata *conn = data->conn;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* requested no body means no transfer... */
    struct FTP *ftp = data->req.p.ftp;
    ftp->transfer = FTPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* start the first command in the DO phase */
  result = ftp_state_quote(data, TRUE, FTP_QUOTE);
  if(result)







|







3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
  struct connectdata *conn = data->conn;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* requested no body means no transfer... */
    struct FTP *ftp = data->req.p.ftp;
    ftp->transfer = PPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* start the first command in the DO phase */
  result = ftp_state_quote(data, TRUE, FTP_QUOTE);
  if(result)
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203

  if(fileName && *fileName)
    ftpc->file = strdup(fileName);
  else
    ftpc->file = NULL; /* instead of point to a zero byte,
                            we make it a NULL pointer */

  if(data->set.upload && !ftpc->file && (ftp->transfer == FTPTRANSFER_BODY)) {
    /* We need a file name when uploading. Return error! */
    failf(data, "Uploading to a URL without a file name!");
    free(rawPath);
    return CURLE_URL_MALFORMAT;
  }

  ftpc->cwddone = FALSE; /* default to not done */







|







4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217

  if(fileName && *fileName)
    ftpc->file = strdup(fileName);
  else
    ftpc->file = NULL; /* instead of point to a zero byte,
                            we make it a NULL pointer */

  if(data->set.upload && !ftpc->file && (ftp->transfer == PPTRANSFER_BODY)) {
    /* We need a file name when uploading. Return error! */
    failf(data, "Uploading to a URL without a file name!");
    free(rawPath);
    return CURLE_URL_MALFORMAT;
  }

  ftpc->cwddone = FALSE; /* default to not done */
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251

    if(result) {
      close_secondarysocket(data, conn);
      return result;
    }
  }

  if(ftp->transfer != FTPTRANSFER_BODY)
    /* no data to transfer */
    Curl_setup_transfer(data, -1, -1, FALSE, -1);
  else if(!connected)
    /* since we didn't connect now, we want do_more to get called */
    conn->bits.do_more = TRUE;

  ftpc->ctl_valid = TRUE; /* seems good */







|







4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265

    if(result) {
      close_secondarysocket(data, conn);
      return result;
    }
  }

  if(ftp->transfer != PPTRANSFER_BODY)
    /* no data to transfer */
    Curl_setup_transfer(data, -1, -1, FALSE, -1);
  else if(!connected)
    /* since we didn't connect now, we want do_more to get called */
    conn->bits.do_more = TRUE;

  ftpc->ctl_valid = TRUE; /* seems good */
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
  if(type) {
    char command;
    *type = 0;                     /* it was in the middle of the hostname */
    command = Curl_raw_toupper(type[6]);

    switch(command) {
    case 'A': /* ASCII mode */
      data->set.prefer_ascii = TRUE;
      break;

    case 'D': /* directory mode */
      data->set.ftp_list_only = TRUE;
      break;

    case 'I': /* binary mode */
    default:
      /* switch off ASCII */
      data->set.prefer_ascii = FALSE;
      break;
    }
  }

  /* get some initial data into the ftp struct */
  ftp->transfer = FTPTRANSFER_BODY;
  ftp->downloadsize = 0;
  conn->proto.ftpc.known_filesize = -1; /* unknown size for now */

  return CURLE_OK;
}

#endif /* CURL_DISABLE_FTP */







|



|





|





|







4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
  if(type) {
    char command;
    *type = 0;                     /* it was in the middle of the hostname */
    command = Curl_raw_toupper(type[6]);

    switch(command) {
    case 'A': /* ASCII mode */
      data->state.prefer_ascii = TRUE;
      break;

    case 'D': /* directory mode */
      data->state.list_only = TRUE;
      break;

    case 'I': /* binary mode */
    default:
      /* switch off ASCII */
      data->state.prefer_ascii = FALSE;
      break;
    }
  }

  /* get some initial data into the ftp struct */
  ftp->transfer = PPTRANSFER_BODY;
  ftp->downloadsize = 0;
  conn->proto.ftpc.known_filesize = -1; /* unknown size for now */

  return CURLE_OK;
}

#endif /* CURL_DISABLE_FTP */
Changes to jni/curl/lib/ftplistparser.c.
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
          if(c == '\r') {
            parser->state.NT.sub.filename = PL_WINNT_FILENAME_WINEOL;
            finfo->b_data[finfo->b_used - 1] = 0;
          }
          else if(c == '\n') {
            parser->offsets.filename = parser->item_offset;
            finfo->b_data[finfo->b_used - 1] = 0;
            parser->offsets.filename = parser->item_offset;
            result = ftp_pl_insert_finfo(data, infop);
            if(result) {
              parser->error = result;
              goto fail;
            }
            parser->state.NT.main = PL_WINNT_DATE;
            parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE;







<







962
963
964
965
966
967
968

969
970
971
972
973
974
975
          if(c == '\r') {
            parser->state.NT.sub.filename = PL_WINNT_FILENAME_WINEOL;
            finfo->b_data[finfo->b_used - 1] = 0;
          }
          else if(c == '\n') {
            parser->offsets.filename = parser->item_offset;
            finfo->b_data[finfo->b_used - 1] = 0;

            result = ftp_pl_insert_finfo(data, infop);
            if(result) {
              parser->error = result;
              goto fail;
            }
            parser->state.NT.main = PL_WINNT_DATE;
            parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE;
Changes to jni/curl/lib/getinfo.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
}

static CURLcode getinfo_char(struct Curl_easy *data, CURLINFO info,
                             const char **param_charp)
{
  switch(info) {
  case CURLINFO_EFFECTIVE_URL:
    *param_charp = data->change.url?data->change.url:(char *)"";
    break;
  case CURLINFO_EFFECTIVE_METHOD: {
    const char *m = data->set.str[STRING_CUSTOMREQUEST];
    if(!m) {
      if(data->set.opt_no_body)
        m = "HEAD";
#ifndef CURL_DISABLE_HTTP







|







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
}

static CURLcode getinfo_char(struct Curl_easy *data, CURLINFO info,
                             const char **param_charp)
{
  switch(info) {
  case CURLINFO_EFFECTIVE_URL:
    *param_charp = data->state.url?data->state.url:(char *)"";
    break;
  case CURLINFO_EFFECTIVE_METHOD: {
    const char *m = data->set.str[STRING_CUSTOMREQUEST];
    if(!m) {
      if(data->set.opt_no_body)
        m = "HEAD";
#ifndef CURL_DISABLE_HTTP
141
142
143
144
145
146
147




148
149
150
151
152
153
154
    *param_charp = data->state.most_recent_ftp_entrypath;
    break;
  case CURLINFO_REDIRECT_URL:
    /* Return the URL this request would have been redirected to if that
       option had been enabled! */
    *param_charp = data->info.wouldredirect;
    break;




  case CURLINFO_PRIMARY_IP:
    /* Return the ip address of the most recent (primary) connection */
    *param_charp = data->info.conn_primary_ip;
    break;
  case CURLINFO_LOCAL_IP:
    /* Return the source/local ip address of the most recent (primary)
       connection */







>
>
>
>







141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
    *param_charp = data->state.most_recent_ftp_entrypath;
    break;
  case CURLINFO_REDIRECT_URL:
    /* Return the URL this request would have been redirected to if that
       option had been enabled! */
    *param_charp = data->info.wouldredirect;
    break;
  case CURLINFO_REFERER:
    /* Return the referrer header for this request, or NULL if unset */
    *param_charp = data->state.referer;
    break;
  case CURLINFO_PRIMARY_IP:
    /* Return the ip address of the most recent (primary) connection */
    *param_charp = data->info.conn_primary_ip;
    break;
  case CURLINFO_LOCAL_IP:
    /* Return the source/local ip address of the most recent (primary)
       connection */
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLINFO_PROXY_SSL_VERIFYRESULT:
    *param_longp = data->set.proxy_ssl.certverifyresult;
    break;
#endif
  case CURLINFO_REDIRECT_COUNT:
    *param_longp = data->set.followlocation;
    break;
  case CURLINFO_HTTPAUTH_AVAIL:
    lptr.to_long = param_longp;
    *lptr.to_ulong = data->info.httpauthavail;
    break;
  case CURLINFO_PROXYAUTH_AVAIL:
    lptr.to_long = param_longp;







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLINFO_PROXY_SSL_VERIFYRESULT:
    *param_longp = data->set.proxy_ssl.certverifyresult;
    break;
#endif
  case CURLINFO_REDIRECT_COUNT:
    *param_longp = data->state.followlocation;
    break;
  case CURLINFO_HTTPAUTH_AVAIL:
    lptr.to_long = param_longp;
    *lptr.to_ulong = data->info.httpauthavail;
    break;
  case CURLINFO_PROXYAUTH_AVAIL:
    lptr.to_long = param_longp;
Changes to jni/curl/lib/hostip.c.
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
  create_hostcache_id(hostname, port, entry_id, sizeof(entry_id));
  entry_len = strlen(entry_id);

  /* See if its already in our dns cache */
  dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len + 1);

  /* No entry found in cache, check if we might have a wildcard entry */
  if(!dns && data->change.wildcard_resolve) {
    create_hostcache_id("*", port, entry_id, sizeof(entry_id));
    entry_len = strlen(entry_id);

    /* See if it's already in our dns cache */
    dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len + 1);
  }








|







265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
  create_hostcache_id(hostname, port, entry_id, sizeof(entry_id));
  entry_len = strlen(entry_id);

  /* See if its already in our dns cache */
  dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len + 1);

  /* No entry found in cache, check if we might have a wildcard entry */
  if(!dns && data->state.wildcard_resolve) {
    create_hostcache_id("*", port, entry_id, sizeof(entry_id));
    entry_len = strlen(entry_id);

    /* See if it's already in our dns cache */
    dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len + 1);
  }

516
517
518
519
520
521
522
523






524
525
526
527
528
529
530
531
#endif
      bool ipnum = FALSE;

    /* notify the resolver start callback */
    if(data->set.resolver_start) {
      int st;
      Curl_set_in_callback(data, true);
      st = data->set.resolver_start(data->state.async.resolver, NULL,






                                    data->set.resolver_start_client);
      Curl_set_in_callback(data, false);
      if(st)
        return CURLRESOLV_ERROR;
    }

#ifndef USE_RESOLVE_ON_IPS
    /* First check if this is an IPv4 address string */







|
>
>
>
>
>
>
|







516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
#endif
      bool ipnum = FALSE;

    /* notify the resolver start callback */
    if(data->set.resolver_start) {
      int st;
      Curl_set_in_callback(data, true);
      st = data->set.resolver_start(
#ifdef USE_CURL_ASYNC
        data->state.async.resolver,
#else
        NULL,
#endif
        NULL,
        data->set.resolver_start_client);
      Curl_set_in_callback(data, false);
      if(st)
        return CURLRESOLV_ERROR;
    }

#ifndef USE_RESOLVE_ON_IPS
    /* First check if this is an IPv4 address string */
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
CURLcode Curl_loadhostpairs(struct Curl_easy *data)
{
  struct curl_slist *hostp;
  char hostname[256];
  int port = 0;

  /* Default is no wildcard found */
  data->change.wildcard_resolve = false;

  for(hostp = data->change.resolve; hostp; hostp = hostp->next) {
    char entry_id[MAX_HOSTCACHE_LEN];
    if(!hostp->data)
      continue;
    if(hostp->data[0] == '-') {
      size_t entry_len;

      if(2 != sscanf(hostp->data + 1, "%255[^:]:%d", hostname, &port)) {







|

|







874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
CURLcode Curl_loadhostpairs(struct Curl_easy *data)
{
  struct curl_slist *hostp;
  char hostname[256];
  int port = 0;

  /* Default is no wildcard found */
  data->state.wildcard_resolve = false;

  for(hostp = data->state.resolve; hostp; hostp = hostp->next) {
    char entry_id[MAX_HOSTCACHE_LEN];
    if(!hostp->data)
      continue;
    if(hostp->data[0] == '-') {
      size_t entry_len;

      if(2 != sscanf(hostp->data + 1, "%255[^:]:%d", hostname, &port)) {
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
      infof(data, "Added %s:%d:%s to DNS cache%s\n",
            hostname, port, addresses, permanent ? "" : " (non-permanent)");

      /* Wildcard hostname */
      if(hostname[0] == '*' && hostname[1] == '\0') {
        infof(data, "RESOLVE %s:%d is wildcard, enabling wildcard checks\n",
              hostname, port);
        data->change.wildcard_resolve = true;
      }
    }
  }
  data->change.resolve = NULL; /* dealt with now */

  return CURLE_OK;
}

CURLcode Curl_resolv_check(struct Curl_easy *data,
                           struct Curl_dns_entry **dns)
{







|



|







1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
      infof(data, "Added %s:%d:%s to DNS cache%s\n",
            hostname, port, addresses, permanent ? "" : " (non-permanent)");

      /* Wildcard hostname */
      if(hostname[0] == '*' && hostname[1] == '\0') {
        infof(data, "RESOLVE %s:%d is wildcard, enabling wildcard checks\n",
              hostname, port);
        data->state.wildcard_resolve = true;
      }
    }
  }
  data->state.resolve = NULL; /* dealt with now */

  return CURLE_OK;
}

CURLcode Curl_resolv_check(struct Curl_easy *data,
                           struct Curl_dns_entry **dns)
{
1098
1099
1100
1101
1102
1103
1104

1105
1106
1107
1108

1109
1110
1111
1112
1113
1114
1115
1116
1117
1118





























   Note: this function disconnects and frees the conn data in case of
   resolve failure */
CURLcode Curl_once_resolved(struct Curl_easy *data, bool *protocol_done)
{
  CURLcode result;
  struct connectdata *conn = data->conn;


  if(data->state.async.dns) {
    conn->dns_entry = data->state.async.dns;
    data->state.async.dns = NULL;
  }


  result = Curl_setup_conn(data, protocol_done);

  if(result) {
    Curl_detach_connnection(data);
    Curl_conncache_remove_conn(data, conn, TRUE);
    Curl_disconnect(data, conn, TRUE);
  }
  return result;
}




































>




>










>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
   Note: this function disconnects and frees the conn data in case of
   resolve failure */
CURLcode Curl_once_resolved(struct Curl_easy *data, bool *protocol_done)
{
  CURLcode result;
  struct connectdata *conn = data->conn;

#ifdef USE_CURL_ASYNC
  if(data->state.async.dns) {
    conn->dns_entry = data->state.async.dns;
    data->state.async.dns = NULL;
  }
#endif

  result = Curl_setup_conn(data, protocol_done);

  if(result) {
    Curl_detach_connnection(data);
    Curl_conncache_remove_conn(data, conn, TRUE);
    Curl_disconnect(data, conn, TRUE);
  }
  return result;
}

/*
 * Curl_resolver_error() calls failf() with the appropriate message after a
 * resolve error
 */

CURLcode Curl_resolver_error(struct Curl_easy *data)
{
  const char *host_or_proxy;
  CURLcode result;

#ifndef CURL_DISABLE_PROXY
  struct connectdata *conn = data->conn;
  if(conn->bits.httpproxy) {
    host_or_proxy = "proxy";
    result = CURLE_COULDNT_RESOLVE_PROXY;
  }
  else
#endif
  {
    host_or_proxy = "host";
    result = CURLE_COULDNT_RESOLVE_HOST;
  }

  failf(data, "Could not resolve %s: %s", host_or_proxy,
        data->state.async.hostname);

  return result;
}
Changes to jni/curl/lib/hostip.h.
241
242
243
244
245
246
247

248
 */
CURLcode Curl_loadhostpairs(struct Curl_easy *data);
CURLcode Curl_resolv_check(struct Curl_easy *data,
                           struct Curl_dns_entry **dns);
int Curl_resolv_getsock(struct Curl_easy *data,
                        curl_socket_t *socks);


#endif /* HEADER_CURL_HOSTIP_H */







>

241
242
243
244
245
246
247
248
249
 */
CURLcode Curl_loadhostpairs(struct Curl_easy *data);
CURLcode Curl_resolv_check(struct Curl_easy *data,
                           struct Curl_dns_entry **dns);
int Curl_resolv_getsock(struct Curl_easy *data,
                        curl_socket_t *socks);

CURLcode Curl_resolver_error(struct Curl_easy *data);
#endif /* HEADER_CURL_HOSTIP_H */
Changes to jni/curl/lib/hsts.c.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#define MAX_HSTS_LINE 4095
#define MAX_HSTS_HOSTLEN 256
#define MAX_HSTS_HOSTLENSTR "256"
#define MAX_HSTS_SUBLEN 4
#define MAX_HSTS_SUBLENSTR "4"
#define MAX_HSTS_DATELEN 64
#define MAX_HSTS_DATELENSTR "64"

#ifdef DEBUGBUILD
/* to play well with debug builds, we can *set* a fixed time this will
   return */
time_t deltatime; /* allow for "adjustments" for unit test purposes */







<
<







42
43
44
45
46
47
48


49
50
51
52
53
54
55
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#define MAX_HSTS_LINE 4095
#define MAX_HSTS_HOSTLEN 256
#define MAX_HSTS_HOSTLENSTR "256"


#define MAX_HSTS_DATELEN 64
#define MAX_HSTS_DATELENSTR "64"

#ifdef DEBUGBUILD
/* to play well with debug builds, we can *set* a fixed time this will
   return */
time_t deltatime; /* allow for "adjustments" for unit test purposes */
Changes to jni/curl/lib/http.c.
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
  http = calloc(1, sizeof(struct HTTP));
  if(!http)
    return CURLE_OUT_OF_MEMORY;

  Curl_mime_initpart(&http->form, data);
  data->req.p.http = http;

  if(data->set.httpversion == CURL_HTTP_VERSION_3) {
    if(conn->handler->flags & PROTOPT_SSL)
      /* Only go HTTP/3 directly on HTTPS URLs. It needs a UDP socket and does
         the QUIC dance. */
      conn->transport = TRNSPRT_QUIC;
    else {
      failf(data, "HTTP/3 requested for non-HTTPS URL");
      return CURLE_URL_MALFORMAT;







|







179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
  http = calloc(1, sizeof(struct HTTP));
  if(!http)
    return CURLE_OUT_OF_MEMORY;

  Curl_mime_initpart(&http->form, data);
  data->req.p.http = http;

  if(data->state.httpwant == CURL_HTTP_VERSION_3) {
    if(conn->handler->flags & PROTOPT_SSL)
      /* Only go HTTP/3 directly on HTTPS URLs. It needs a UDP socket and does
         the QUIC dance. */
      conn->transport = TRNSPRT_QUIC;
    else {
      failf(data, "HTTP/3 requested for non-HTTPS URL");
      return CURLE_URL_MALFORMAT;
294
295
296
297
298
299
300
301
302
303
304
305
306
307


308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
 *
 * Returns CURLcode.
 */
static CURLcode http_output_basic(struct Curl_easy *data, bool proxy)
{
  size_t size = 0;
  char *authorization = NULL;
  struct connectdata *conn = data->conn;
  char **userp;
  const char *user;
  const char *pwd;
  CURLcode result;
  char *out;



  if(proxy) {
#ifndef CURL_DISABLE_PROXY
    userp = &data->state.aptr.proxyuserpwd;
    user = conn->http_proxy.user;
    pwd = conn->http_proxy.passwd;
#else
    return CURLE_NOT_BUILT_IN;
#endif
  }
  else {
    userp = &data->state.aptr.userpwd;
    user = conn->user;
    pwd = conn->passwd;
  }

  out = aprintf("%s:%s", user, pwd ? pwd : "");
  if(!out)
    return CURLE_OUT_OF_MEMORY;

  result = Curl_base64_encode(data, out, strlen(out), &authorization, &size);







<






>
>



|
|






|
|







294
295
296
297
298
299
300

301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
 *
 * Returns CURLcode.
 */
static CURLcode http_output_basic(struct Curl_easy *data, bool proxy)
{
  size_t size = 0;
  char *authorization = NULL;

  char **userp;
  const char *user;
  const char *pwd;
  CURLcode result;
  char *out;

  /* credentials are unique per transfer for HTTP, do not use the ones for the
     connection */
  if(proxy) {
#ifndef CURL_DISABLE_PROXY
    userp = &data->state.aptr.proxyuserpwd;
    user = data->state.aptr.proxyuser;
    pwd = data->state.aptr.proxypasswd;
#else
    return CURLE_NOT_BUILT_IN;
#endif
  }
  else {
    userp = &data->state.aptr.userpwd;
    user = data->state.aptr.user;
    pwd = data->state.aptr.passwd;
  }

  out = aprintf("%s:%s", user, pwd ? pwd : "");
  if(!out)
    return CURLE_OUT_OF_MEMORY;

  result = Curl_base64_encode(data, out, strlen(out), &authorization, &size);
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
    pickhost = pickoneauth(&data->state.authhost, authmask);
    if(!pickhost)
      data->state.authproblem = TRUE;
    if(data->state.authhost.picked == CURLAUTH_NTLM &&
       conn->httpversion > 11) {
      infof(data, "Forcing HTTP/1.1 for NTLM");
      connclose(conn, "Force HTTP/1.1 connection");
      data->set.httpversion = CURL_HTTP_VERSION_1_1;
    }
  }
#ifndef CURL_DISABLE_PROXY
  if(conn->bits.proxy_user_passwd &&
     ((data->req.httpcode == 407) ||
      (conn->bits.authneg && data->req.httpcode < 300))) {
    pickproxy = pickoneauth(&data->state.authproxy,







|







592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
    pickhost = pickoneauth(&data->state.authhost, authmask);
    if(!pickhost)
      data->state.authproblem = TRUE;
    if(data->state.authhost.picked == CURLAUTH_NTLM &&
       conn->httpversion > 11) {
      infof(data, "Forcing HTTP/1.1 for NTLM");
      connclose(conn, "Force HTTP/1.1 connection");
      data->state.httpwant = CURL_HTTP_VERSION_1_1;
    }
  }
#ifndef CURL_DISABLE_PROXY
  if(conn->bits.proxy_user_passwd &&
     ((data->req.httpcode == 407) ||
      (conn->bits.authneg && data->req.httpcode < 300))) {
    pickproxy = pickoneauth(&data->state.authproxy,
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
      if(result)
        return result;
    }
    /* In case this is GSS auth, the newurl field is already allocated so
       we must make sure to free it before allocating a new one. As figured
       out in bug #2284386 */
    Curl_safefree(data->req.newurl);
    data->req.newurl = strdup(data->change.url); /* clone URL */
    if(!data->req.newurl)
      return CURLE_OUT_OF_MEMORY;
  }
  else if((data->req.httpcode < 300) &&
          (!data->state.authhost.done) &&
          conn->bits.authneg) {
    /* no (known) authentication available,
       authentication is not "done" yet and
       no authentication seems to be required and
       we didn't try HEAD or GET */
    if((data->state.httpreq != HTTPREQ_GET) &&
       (data->state.httpreq != HTTPREQ_HEAD)) {
      data->req.newurl = strdup(data->change.url); /* clone URL */
      if(!data->req.newurl)
        return CURLE_OUT_OF_MEMORY;
      data->state.authhost.done = TRUE;
    }
  }
  if(http_should_fail(data)) {
    failf(data, "The requested URL returned error: %d",







|












|







618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
      if(result)
        return result;
    }
    /* In case this is GSS auth, the newurl field is already allocated so
       we must make sure to free it before allocating a new one. As figured
       out in bug #2284386 */
    Curl_safefree(data->req.newurl);
    data->req.newurl = strdup(data->state.url); /* clone URL */
    if(!data->req.newurl)
      return CURLE_OUT_OF_MEMORY;
  }
  else if((data->req.httpcode < 300) &&
          (!data->state.authhost.done) &&
          conn->bits.authneg) {
    /* no (known) authentication available,
       authentication is not "done" yet and
       no authentication seems to be required and
       we didn't try HEAD or GET */
    if((data->state.httpreq != HTTPREQ_GET) &&
       (data->state.httpreq != HTTPREQ_HEAD)) {
      data->req.newurl = strdup(data->state.url); /* clone URL */
      if(!data->req.newurl)
        return CURLE_OUT_OF_MEMORY;
      data->state.authhost.done = TRUE;
    }
  }
  if(http_should_fail(data)) {
    failf(data, "The requested URL returned error: %d",
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
  }
  else
#endif
#ifndef CURL_DISABLE_CRYPTO_AUTH
  if(authstatus->picked == CURLAUTH_DIGEST) {
    auth = "Digest";
    result = Curl_output_digest(data,
                                conn,
                                proxy,
                                (const unsigned char *)request,
                                (const unsigned char *)path);
    if(result)
      return result;
  }
  else







<







706
707
708
709
710
711
712

713
714
715
716
717
718
719
  }
  else
#endif
#ifndef CURL_DISABLE_CRYPTO_AUTH
  if(authstatus->picked == CURLAUTH_DIGEST) {
    auth = "Digest";
    result = Curl_output_digest(data,

                                proxy,
                                (const unsigned char *)request,
                                (const unsigned char *)path);
    if(result)
      return result;
  }
  else
752
753
754
755
756
757
758

759

760
761
762

763
764
765
766
767
768
769
770
    authstatus->done = TRUE;
  }

  if(auth) {
#ifndef CURL_DISABLE_PROXY
    infof(data, "%s auth using %s with user '%s'\n",
          proxy ? "Proxy" : "Server", auth,

          proxy ? (conn->http_proxy.user ? conn->http_proxy.user : "") :

          (conn->user ? conn->user : ""));
#else
    infof(data, "Server auth using %s with user '%s'\n",

          auth, conn->user ? conn->user : "");
#endif
    authstatus->multipass = (!authstatus->done) ? TRUE : FALSE;
  }
  else
    authstatus->multipass = FALSE;

  return CURLE_OK;







>
|
>
|


>
|







752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
    authstatus->done = TRUE;
  }

  if(auth) {
#ifndef CURL_DISABLE_PROXY
    infof(data, "%s auth using %s with user '%s'\n",
          proxy ? "Proxy" : "Server", auth,
          proxy ? (data->state.aptr.proxyuser ?
                   data->state.aptr.proxyuser : "") :
          (data->state.aptr.user ?
           data->state.aptr.user : ""));
#else
    infof(data, "Server auth using %s with user '%s'\n",
          auth, data->state.aptr.user ?
          data->state.aptr.user : "");
#endif
    authstatus->multipass = (!authstatus->done) ? TRUE : FALSE;
  }
  else
    authstatus->multipass = FALSE;

  return CURLE_OK;
867
868
869
870
871
872
873
874

875

876
877
878

879
880

881
882
883
884
885
886
887

  return result;
}

#else
/* when disabled */
CURLcode
Curl_http_output_auth(struct connectdata *conn,

                      const char *request,

                      const char *path,
                      bool proxytunnel)
{

  (void)conn;
  (void)request;

  (void)path;
  (void)proxytunnel;
  return CURLE_OK;
}
#endif

/*







|
>

>



>


>







870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894

  return result;
}

#else
/* when disabled */
CURLcode
Curl_http_output_auth(struct Curl_easy *data,
                      struct connectdata *conn,
                      const char *request,
                      Curl_HttpReq httpreq,
                      const char *path,
                      bool proxytunnel)
{
  (void)data;
  (void)conn;
  (void)request;
  (void)httpreq;
  (void)path;
  (void)proxytunnel;
  return CURLE_OK;
}
#endif

/*
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
        *availp |= CURLAUTH_NEGOTIATE;
        authp->avail |= CURLAUTH_NEGOTIATE;

        if(authp->picked == CURLAUTH_NEGOTIATE) {
          CURLcode result = Curl_input_negotiate(data, conn, proxy, auth);
          if(!result) {
            DEBUGASSERT(!data->req.newurl);
            data->req.newurl = strdup(data->change.url);
            if(!data->req.newurl)
              return CURLE_OUT_OF_MEMORY;
            data->state.authproblem = FALSE;
            /* we received a GSS auth token and we dealt with it fine */
            *negstate = GSS_AUTHRECV;
          }
          else







|







946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
        *availp |= CURLAUTH_NEGOTIATE;
        authp->avail |= CURLAUTH_NEGOTIATE;

        if(authp->picked == CURLAUTH_NEGOTIATE) {
          CURLcode result = Curl_input_negotiate(data, conn, proxy, auth);
          if(!result) {
            DEBUGASSERT(!data->req.newurl);
            data->req.newurl = strdup(data->state.url);
            if(!data->req.newurl)
              return CURLE_OUT_OF_MEMORY;
            data->state.authproblem = FALSE;
            /* we received a GSS auth token and we dealt with it fine */
            *negstate = GSS_AUTHRECV;
          }
          else
1083
1084
1085
1086
1087
1088
1089








1090
1091
1092
1093
1094
1095
1096

  /*
  ** Any code < 400 is never terminal.
  */
  if(httpcode < 400)
    return FALSE;









  /*
  ** Any code >= 400 that's not 401 or 407 is always
  ** a terminal error
  */
  if((httpcode != 401) && (httpcode != 407))
    return TRUE;








>
>
>
>
>
>
>
>







1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111

  /*
  ** Any code < 400 is never terminal.
  */
  if(httpcode < 400)
    return FALSE;

  /*
  ** A 416 response to a resume request is presumably because the file is
  ** already completely downloaded and thus not actually a fail.
  */
  if(data->state.resume_from && data->state.httpreq == HTTPREQ_GET &&
     httpcode == 416)
    return FALSE;

  /*
  ** Any code >= 400 that's not 401 or 407 is always
  ** a terminal error
  */
  if((httpcode != 401) && (httpcode != 407))
    return TRUE;

1148
1149
1150
1151
1152
1153
1154





1155
1156
1157
1158
1159
1160
1161
1162
  if(!http->postsize)
    /* nothing to return */
    return 0;

  /* make sure that a HTTP request is never sent away chunked! */
  data->req.forbidchunk = (http->sending == HTTPSEND_REQUEST)?TRUE:FALSE;






  if(http->postsize <= (curl_off_t)fullsize) {
    memcpy(buffer, http->postdata, (size_t)http->postsize);
    fullsize = (size_t)http->postsize;

    if(http->backup.postsize) {
      /* move backup data into focus and continue on that */
      http->postdata = http->backup.postdata;
      http->postsize = http->backup.postsize;







>
>
>
>
>
|







1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
  if(!http->postsize)
    /* nothing to return */
    return 0;

  /* make sure that a HTTP request is never sent away chunked! */
  data->req.forbidchunk = (http->sending == HTTPSEND_REQUEST)?TRUE:FALSE;

  if(data->set.max_send_speed &&
     (data->set.max_send_speed < http->postsize))
    /* speed limit */
    fullsize = (size_t)data->set.max_send_speed;

  else if(http->postsize <= (curl_off_t)fullsize) {
    memcpy(buffer, http->postdata, (size_t)http->postsize);
    fullsize = (size_t)http->postsize;

    if(http->backup.postsize) {
      /* move backup data into focus and continue on that */
      http->postdata = http->backup.postdata;
      http->postsize = http->backup.postsize;
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
 */
CURLcode Curl_buffer_send(struct dynbuf *in,
                          struct Curl_easy *data,
                          /* add the number of sent bytes to this
                             counter */
                          curl_off_t *bytes_written,
                          /* how much of the buffer contains body data */
                          size_t included_body_bytes,
                          int socketindex)
{
  ssize_t amount;
  CURLcode result;
  char *ptr;
  size_t size;
  struct connectdata *conn = data->conn;







|







1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
 */
CURLcode Curl_buffer_send(struct dynbuf *in,
                          struct Curl_easy *data,
                          /* add the number of sent bytes to this
                             counter */
                          curl_off_t *bytes_written,
                          /* how much of the buffer contains body data */
                          curl_off_t included_body_bytes,
                          int socketindex)
{
  ssize_t amount;
  CURLcode result;
  char *ptr;
  size_t size;
  struct connectdata *conn = data->conn;
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236












1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250

  /* The looping below is required since we use non-blocking sockets, but due
     to the circumstances we will just loop and try again and again etc */

  ptr = Curl_dyn_ptr(in);
  size = Curl_dyn_len(in);

  headersize = size - included_body_bytes; /* the initial part that isn't body
                                              is header */

  DEBUGASSERT(size > included_body_bytes);

  result = Curl_convert_to_network(data, ptr, headersize);
  /* Curl_convert_to_network calls failf if unsuccessful */
  if(result) {
    /* conversion failed, free memory and return to the caller */
    Curl_dyn_free(in);
    return result;
  }

  if((conn->handler->flags & PROTOPT_SSL
#ifndef CURL_DISABLE_PROXY
      || conn->http_proxy.proxytype == CURLPROXY_HTTPS
#endif
       )
     && conn->httpversion != 20) {












    /* We never send more than CURL_MAX_WRITE_SIZE bytes in one single chunk
       when we speak HTTPS, as if only a fraction of it is sent now, this data
       needs to fit into the normal read-callback buffer later on and that
       buffer is using this size.
    */

    sendsize = CURLMIN(size, CURL_MAX_WRITE_SIZE);

    /* OpenSSL is very picky and we must send the SAME buffer pointer to the
       library when we attempt to re-send this buffer. Sending the same data
       is not enough, we must use the exact same address. For this reason, we
       must copy the data to the uploadbuffer first, since that is the buffer
       we will be using if this send is retried later.
    */







|
|

|















>
>
>
>
>
>
>
>
>
>
>
>





|
|







1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282

  /* The looping below is required since we use non-blocking sockets, but due
     to the circumstances we will just loop and try again and again etc */

  ptr = Curl_dyn_ptr(in);
  size = Curl_dyn_len(in);

  headersize = size - (size_t)included_body_bytes; /* the initial part that
                                                      isn't body is header */

  DEBUGASSERT(size > (size_t)included_body_bytes);

  result = Curl_convert_to_network(data, ptr, headersize);
  /* Curl_convert_to_network calls failf if unsuccessful */
  if(result) {
    /* conversion failed, free memory and return to the caller */
    Curl_dyn_free(in);
    return result;
  }

  if((conn->handler->flags & PROTOPT_SSL
#ifndef CURL_DISABLE_PROXY
      || conn->http_proxy.proxytype == CURLPROXY_HTTPS
#endif
       )
     && conn->httpversion != 20) {
    /* Make sure this doesn't send more body bytes than what the max send
       speed says. The request bytes do not count to the max speed.
    */
    if(data->set.max_send_speed &&
       (included_body_bytes > data->set.max_send_speed)) {
      curl_off_t overflow = included_body_bytes - data->set.max_send_speed;
      DEBUGASSERT((size_t)overflow < size);
      sendsize = size - (size_t)overflow;
    }
    else
      sendsize = size;

    /* We never send more than CURL_MAX_WRITE_SIZE bytes in one single chunk
       when we speak HTTPS, as if only a fraction of it is sent now, this data
       needs to fit into the normal read-callback buffer later on and that
       buffer is using this size.
    */
    if(sendsize > CURL_MAX_WRITE_SIZE)
      sendsize = CURL_MAX_WRITE_SIZE;

    /* OpenSSL is very picky and we must send the SAME buffer pointer to the
       library when we attempt to re-send this buffer. Sending the same data
       is not enough, we must use the exact same address. For this reason, we
       must copy the data to the uploadbuffer first, since that is the buffer
       we will be using if this send is retried later.
    */
1268
1269
1270
1271
1272
1273
1274











1275

1276
1277
1278
1279
1280
1281
1282
      if(altsize)
        sendsize = CURLMIN(size, altsize);
      else
        sendsize = size;
    }
    else
#endif











    sendsize = size;

  }

  result = Curl_write(data, sockfd, ptr, sendsize, &amount);

  if(!result) {
    /*
     * Note that we may not send the entire chunk at once, and we have a set







>
>
>
>
>
>
>
>
>
>
>
|
>







1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
      if(altsize)
        sendsize = CURLMIN(size, altsize);
      else
        sendsize = size;
    }
    else
#endif
    {
      /* Make sure this doesn't send more body bytes than what the max send
         speed says. The request bytes do not count to the max speed.
      */
      if(data->set.max_send_speed &&
         (included_body_bytes > data->set.max_send_speed)) {
        curl_off_t overflow = included_body_bytes - data->set.max_send_speed;
        DEBUGASSERT((size_t)overflow < size);
        sendsize = size - (size_t)overflow;
      }
      else
        sendsize = size;
    }
  }

  result = Curl_write(data, sockfd, ptr, sendsize, &amount);

  if(!result) {
    /*
     * Note that we may not send the entire chunk at once, and we have a set
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
  }
  else {
    strcpy(tcp_version, "TCP4");
  }

  msnprintf(proxy_header,
            sizeof(proxy_header),
            "PROXY %s %s %s %li %li\r\n",
            tcp_version,
            data->info.conn_local_ip,
            data->info.conn_primary_ip,
            data->info.conn_local_port,
            data->info.conn_primary_port);

  Curl_dyn_init(&req, DYN_HAXPROXY);







|







1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
  }
  else {
    strcpy(tcp_version, "TCP4");
  }

  msnprintf(proxy_header,
            sizeof(proxy_header),
            "PROXY %s %s %s %i %i\r\n",
            tcp_version,
            data->info.conn_local_ip,
            data->info.conn_primary_ip,
            data->info.conn_local_port,
            data->info.conn_primary_port);

  Curl_dyn_init(&req, DYN_HAXPROXY);
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558

static int https_getsock(struct Curl_easy *data,
                         struct connectdata *conn,
                         curl_socket_t *socks)
{
  (void)data;
  if(conn->handler->flags & PROTOPT_SSL)
    return Curl_ssl_getsock(conn, socks);
  return GETSOCK_BLANK;
}
#endif /* USE_SSL */

/*
 * Curl_http_done() gets called after a single HTTP request has been
 * performed.







|







1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602

static int https_getsock(struct Curl_easy *data,
                         struct connectdata *conn,
                         curl_socket_t *socks)
{
  (void)data;
  if(conn->handler->flags & PROTOPT_SSL)
    return Curl_ssl->getsock(conn, socks);
  return GETSOCK_BLANK;
}
#endif /* USE_SSL */

/*
 * Curl_http_done() gets called after a single HTTP request has been
 * performed.
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
 * 1.0.
 */
static bool use_http_1_1plus(const struct Curl_easy *data,
                             const struct connectdata *conn)
{
  if((data->state.httpversion == 10) || (conn->httpversion == 10))
    return FALSE;
  if((data->set.httpversion == CURL_HTTP_VERSION_1_0) &&
     (conn->httpversion <= 10))
    return FALSE;
  return ((data->set.httpversion == CURL_HTTP_VERSION_NONE) ||
          (data->set.httpversion >= CURL_HTTP_VERSION_1_1));
}

#ifndef USE_HYPER
static const char *get_http_string(const struct Curl_easy *data,
                                   const struct connectdata *conn)
{
#ifdef ENABLE_QUIC
  if((data->set.httpversion == CURL_HTTP_VERSION_3) ||
     (conn->httpversion == 30))
    return "3";
#endif

#ifdef USE_NGHTTP2
  if(conn->proto.httpc.h2)
    return "2";







|


|
|







|







1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
 * 1.0.
 */
static bool use_http_1_1plus(const struct Curl_easy *data,
                             const struct connectdata *conn)
{
  if((data->state.httpversion == 10) || (conn->httpversion == 10))
    return FALSE;
  if((data->state.httpwant == CURL_HTTP_VERSION_1_0) &&
     (conn->httpversion <= 10))
    return FALSE;
  return ((data->state.httpwant == CURL_HTTP_VERSION_NONE) ||
          (data->state.httpwant >= CURL_HTTP_VERSION_1_1));
}

#ifndef USE_HYPER
static const char *get_http_string(const struct Curl_easy *data,
                                   const struct connectdata *conn)
{
#ifdef ENABLE_QUIC
  if((data->state.httpwant == CURL_HTTP_VERSION_3) ||
     (conn->httpversion == 30))
    return "3";
#endif

#ifdef USE_NGHTTP2
  if(conn->proto.httpc.h2)
    return "2";
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
  char *ptr = NULL;
  CURLcode result = CURLE_OK;
  const char *endofline_native = NULL;
  const char *endofline_network = NULL;

  if(
#ifdef CURL_DO_LINEEND_CONV
     (handle->set.prefer_ascii) ||
#endif
     (handle->set.crlf)) {
    /* \n will become \r\n later on */
    endofline_native  = "\n";
    endofline_network = "\x0a";
  }
  else {







|







1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
  char *ptr = NULL;
  CURLcode result = CURLE_OK;
  const char *endofline_native = NULL;
  const char *endofline_network = NULL;

  if(
#ifdef CURL_DO_LINEEND_CONV
     (handle->state.prefer_ascii) ||
#endif
     (handle->set.crlf)) {
    /* \n will become \r\n later on */
    endofline_native  = "\n";
    endofline_network = "\x0a";
  }
  else {
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
  result = Curl_hyper_header(data, req, datestr);
#endif

  return result;
}
#else
/* disabled */
CURLcode Curl_add_timecondition(const struct connectdata *conn,
                                struct dynbuf *req)
{
  (void)conn;
  (void)req;
  return CURLE_OK;
}
#endif

void Curl_http_method(struct Curl_easy *data, struct connectdata *conn,
                      const char **method, Curl_HttpReq *reqp)







|


|







2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
  result = Curl_hyper_header(data, req, datestr);
#endif

  return result;
}
#else
/* disabled */
CURLcode Curl_add_timecondition(struct Curl_easy *data,
                                struct dynbuf *req)
{
  (void)data;
  (void)req;
  return CURLE_OK;
}
#endif

void Curl_http_method(struct Curl_easy *data, struct connectdata *conn,
                      const char **method, Curl_HttpReq *reqp)
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
        curl_url_cleanup(h);
        return CURLE_OUT_OF_MEMORY;
      }
    }
    /* Extract the URL to use in the request. Store in STRING_TEMP_URL for
       clean-up reasons if the function returns before the free() further
       down. */
    uc = curl_url_get(h, CURLUPART_URL, &url, 0);
    if(uc) {
      curl_url_cleanup(h);
      return CURLE_OUT_OF_MEMORY;
    }

    curl_url_cleanup(h);








|







2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
        curl_url_cleanup(h);
        return CURLE_OUT_OF_MEMORY;
      }
    }
    /* Extract the URL to use in the request. Store in STRING_TEMP_URL for
       clean-up reasons if the function returns before the free() further
       down. */
    uc = curl_url_get(h, CURLUPART_URL, &url, CURLU_NO_DEFAULT_PORT);
    if(uc) {
      curl_url_cleanup(h);
      return CURLE_OUT_OF_MEMORY;
    }

    curl_url_cleanup(h);

2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
            break;
          default:
            type = NULL;
          }
        }
        if(!type) {
          result = Curl_dyn_addf(r, ";type=%c",
                                 data->set.prefer_ascii ? 'a' : 'i');
          if(result)
            return result;
        }
      }
    }
  }








|







2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
            break;
          default:
            type = NULL;
          }
        }
        if(!type) {
          result = Curl_dyn_addf(r, ";type=%c",
                                 data->state.prefer_ascii ? 'a' : 'i');
          if(result)
            return result;
        }
      }
    }
  }

2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
        /* set the pointer to mark that we will send the post body using the
           read callback, but only if we're not in authenticate negotiation */
        if(!conn->bits.authneg)
          http->postdata = (char *)&http->postdata;
      }
    }
    /* issue the request */
    result = Curl_buffer_send(r, data, &data->info.request_size,
                              (size_t)included_body, FIRSTSOCKET);

    if(result)
      failf(data, "Failed sending HTTP POST request");
    else
      Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE,
                          http->postdata?FIRSTSOCKET:-1);
    break;







|
|







2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
        /* set the pointer to mark that we will send the post body using the
           read callback, but only if we're not in authenticate negotiation */
        if(!conn->bits.authneg)
          http->postdata = (char *)&http->postdata;
      }
    }
    /* issue the request */
    result = Curl_buffer_send(r, data, &data->info.request_size, included_body,
                              FIRSTSOCKET);

    if(result)
      failf(data, "Failed sending HTTP POST request");
    else
      Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE,
                          http->postdata?FIRSTSOCKET:-1);
    break;
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
        break;
      case CURL_HTTP_VERSION_1_1:
        /* continue with HTTP/1.1 when explicitly requested */
        break;
      default:
        /* Check if user wants to use HTTP/2 with clear TCP*/
#ifdef USE_NGHTTP2
        if(data->set.httpversion == CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) {
#ifndef CURL_DISABLE_PROXY
          if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
            /* We don't support HTTP/2 proxies yet. Also it's debatable
               whether or not this setting should apply to HTTP/2 proxies. */
            infof(data, "Ignoring HTTP/2 prior knowledge due to proxy\n");
            break;
          }







|







2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
        break;
      case CURL_HTTP_VERSION_1_1:
        /* continue with HTTP/1.1 when explicitly requested */
        break;
      default:
        /* Check if user wants to use HTTP/2 with clear TCP*/
#ifdef USE_NGHTTP2
        if(data->state.httpwant == CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) {
#ifndef CURL_DISABLE_PROXY
          if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
            /* We don't support HTTP/2 proxies yet. Also it's debatable
               whether or not this setting should apply to HTTP/2 proxies. */
            infof(data, "Ignoring HTTP/2 prior knowledge due to proxy\n");
            break;
          }
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
                                   (pq ? pq : data->state.up.path), FALSE);
    free(pq);
    if(result)
      return result;
  }

  Curl_safefree(data->state.aptr.ref);
  if(data->change.referer && !Curl_checkheaders(data, "Referer")) {
    data->state.aptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
    if(!data->state.aptr.ref)
      return CURLE_OUT_OF_MEMORY;
  }

  if(!Curl_checkheaders(data, "Accept-Encoding") &&
     data->set.str[STRING_ENCODING]) {
    Curl_safefree(data->state.aptr.accept_encoding);
    data->state.aptr.accept_encoding =
      aprintf("Accept-Encoding: %s\r\n", data->set.str[STRING_ENCODING]);
    if(!data->state.aptr.accept_encoding)
      return CURLE_OUT_OF_MEMORY;
  }
  else {
    Curl_safefree(data->state.aptr.accept_encoding);
    data->state.aptr.accept_encoding = NULL;
  }

#ifdef HAVE_LIBZ
  /* we only consider transfer-encoding magic if libz support is built-in */

  if(!Curl_checkheaders(data, "TE") &&
     data->set.http_transfer_encoding) {
    /* When we are to insert a TE: header in the request, we must also insert







|
|












|

<
<







3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064


3065
3066
3067
3068
3069
3070
3071
                                   (pq ? pq : data->state.up.path), FALSE);
    free(pq);
    if(result)
      return result;
  }

  Curl_safefree(data->state.aptr.ref);
  if(data->state.referer && !Curl_checkheaders(data, "Referer")) {
    data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
    if(!data->state.aptr.ref)
      return CURLE_OUT_OF_MEMORY;
  }

  if(!Curl_checkheaders(data, "Accept-Encoding") &&
     data->set.str[STRING_ENCODING]) {
    Curl_safefree(data->state.aptr.accept_encoding);
    data->state.aptr.accept_encoding =
      aprintf("Accept-Encoding: %s\r\n", data->set.str[STRING_ENCODING]);
    if(!data->state.aptr.accept_encoding)
      return CURLE_OUT_OF_MEMORY;
  }
  else
    Curl_safefree(data->state.aptr.accept_encoding);



#ifdef HAVE_LIBZ
  /* we only consider transfer-encoding magic if libz support is built-in */

  if(!Curl_checkheaders(data, "TE") &&
     data->set.http_transfer_encoding) {
    /* When we are to insert a TE: header in the request, we must also insert
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
                  data->state.aptr.uagent:"",
                  p_accept?p_accept:"",
                  data->state.aptr.te?data->state.aptr.te:"",
                  (data->set.str[STRING_ENCODING] &&
                   *data->set.str[STRING_ENCODING] &&
                   data->state.aptr.accept_encoding)?
                  data->state.aptr.accept_encoding:"",
                  (data->change.referer && data->state.aptr.ref)?
                  data->state.aptr.ref:"" /* Referer: <data> */,
#ifndef CURL_DISABLE_PROXY
                  (conn->bits.httpproxy &&
                   !conn->bits.tunnel_proxy &&
                   !Curl_checkheaders(data, "Proxy-Connection") &&
                   !Curl_checkProxyheaders(data, conn, "Proxy-Connection"))?
                  "Proxy-Connection: Keep-Alive\r\n":"",







|







3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
                  data->state.aptr.uagent:"",
                  p_accept?p_accept:"",
                  data->state.aptr.te?data->state.aptr.te:"",
                  (data->set.str[STRING_ENCODING] &&
                   *data->set.str[STRING_ENCODING] &&
                   data->state.aptr.accept_encoding)?
                  data->state.aptr.accept_encoding:"",
                  (data->state.referer && data->state.aptr.ref)?
                  data->state.aptr.ref:"" /* Referer: <data> */,
#ifndef CURL_DISABLE_PROXY
                  (conn->bits.httpproxy &&
                   !conn->bits.tunnel_proxy &&
                   !Curl_checkheaders(data, "Proxy-Connection") &&
                   !Curl_checkProxyheaders(data, conn, "Proxy-Connection"))?
                  "Proxy-Connection: Keep-Alive\r\n":"",
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
  if(result) {
    Curl_dyn_free(&req);
    return result;
  }

  if(!(conn->handler->flags&PROTOPT_SSL) &&
     conn->httpversion != 20 &&
     (data->set.httpversion == CURL_HTTP_VERSION_2)) {
    /* append HTTP2 upgrade magic stuff to the HTTP request if it isn't done
       over SSL */
    result = Curl_http2_request_upgrade(&req, conn);
    if(result) {
      Curl_dyn_free(&req);
      return result;
    }
  }

  result = Curl_http_cookies(data, conn, &req);







|


|







3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
  if(result) {
    Curl_dyn_free(&req);
    return result;
  }

  if(!(conn->handler->flags&PROTOPT_SSL) &&
     conn->httpversion != 20 &&
     (data->state.httpwant == CURL_HTTP_VERSION_2)) {
    /* append HTTP2 upgrade magic stuff to the HTTP request if it isn't done
       over SSL */
    result = Curl_http2_request_upgrade(&req, data);
    if(result) {
      Curl_dyn_free(&req);
      return result;
    }
  }

  result = Curl_http_cookies(data, conn, &req);
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
            if(!k->upload_done) {
              if((k->httpcode == 417) && data->state.expect100header) {
                /* 417 Expectation Failed - try again without the Expect
                   header */
                infof(data, "Got 417 while waiting for a 100\n");
                data->state.disableexpect = TRUE;
                DEBUGASSERT(!data->req.newurl);
                data->req.newurl = strdup(data->change.url);
                Curl_done_sending(data, k);
              }
              else if(data->set.http_keep_sending_on_error) {
                infof(data, "HTTP error before end of send, keep sending\n");
                if(k->exp100 > EXP100_SEND_DATA) {
                  k->exp100 = EXP100_SEND_DATA;
                  k->keepon |= KEEP_SEND;







|







4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
            if(!k->upload_done) {
              if((k->httpcode == 417) && data->state.expect100header) {
                /* 417 Expectation Failed - try again without the Expect
                   header */
                infof(data, "Got 417 while waiting for a 100\n");
                data->state.disableexpect = TRUE;
                DEBUGASSERT(!data->req.newurl);
                data->req.newurl = strdup(data->state.url);
                Curl_done_sending(data, k);
              }
              else if(data->set.http_keep_sending_on_error) {
                infof(data, "HTTP error before end of send, keep sending\n");
                if(k->exp100 > EXP100_SEND_DATA) {
                  k->exp100 = EXP100_SEND_DATA;
                  k->keepon |= KEEP_SEND;
4140
4141
4142
4143
4144
4145
4146

4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
















4163
4164
4165
4166
4167
4168
4169
         *
         * The response code is always a three-digit number in HTTP as the spec
         * says. We try to allow any number here, but we cannot make
         * guarantees on future behaviors since it isn't within the protocol.
         */
        char separator;
        char twoorthree[2];

        nc = sscanf(HEADER1,
                    " HTTP/%1d.%1d%c%3d",
                    &httpversion_major,
                    &conn->httpversion,
                    &separator,
                    &k->httpcode);

        if(nc == 1 && httpversion_major >= 2 &&
           2 == sscanf(HEADER1, " HTTP/%1[23] %d", twoorthree, &k->httpcode)) {
          conn->httpversion = 0;
          nc = 4;
          separator = ' ';
        }

        if((nc == 4) && (' ' == separator)) {
          conn->httpversion += 10 * httpversion_major;

















          if(k->upgr101 == UPGR101_RECEIVED) {
            /* supposedly upgraded to http2 now */
            if(conn->httpversion != 20)
              infof(data, "Lying server, not serving HTTP/2\n");
          }
          if(conn->httpversion < 20) {







>



|











|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
         *
         * The response code is always a three-digit number in HTTP as the spec
         * says. We try to allow any number here, but we cannot make
         * guarantees on future behaviors since it isn't within the protocol.
         */
        char separator;
        char twoorthree[2];
        int httpversion = 0;
        nc = sscanf(HEADER1,
                    " HTTP/%1d.%1d%c%3d",
                    &httpversion_major,
                    &httpversion,
                    &separator,
                    &k->httpcode);

        if(nc == 1 && httpversion_major >= 2 &&
           2 == sscanf(HEADER1, " HTTP/%1[23] %d", twoorthree, &k->httpcode)) {
          conn->httpversion = 0;
          nc = 4;
          separator = ' ';
        }

        if((nc == 4) && (' ' == separator)) {
          httpversion += 10 * httpversion_major;
          switch(httpversion) {
          case 10:
          case 11:
#if defined(USE_NGHTTP2) || defined(USE_HYPER)
          case 20:
#endif
#if defined(ENABLE_QUIC)
          case 30:
#endif
            conn->httpversion = (unsigned char)httpversion;
            break;
          default:
            failf(data, "Unsupported HTTP version (%u.%d) in response",
                  httpversion/10, httpversion%10);
            return CURLE_UNSUPPORTED_PROTOCOL;
          }

          if(k->upgr101 == UPGR101_RECEIVED) {
            /* supposedly upgraded to http2 now */
            if(conn->httpversion != 20)
              infof(data, "Lying server, not serving HTTP/2\n");
          }
          if(conn->httpversion < 20) {
4196
4197
4198
4199
4200
4201
4202

4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
        else {
          failf(data, "Unsupported HTTP version in response");
          return CURLE_UNSUPPORTED_PROTOCOL;
        }
      }
      else if(conn->handler->protocol & CURLPROTO_RTSP) {
        char separator;

        nc = sscanf(HEADER1,
                    " RTSP/%1d.%1d%c%3d",
                    &rtspversion_major,
                    &conn->rtspversion,
                    &separator,
                    &k->httpcode);
        if((nc == 4) && (' ' == separator)) {
          conn->rtspversion += 10 * rtspversion_major;
          conn->httpversion = 11; /* For us, RTSP acts like HTTP 1.1 */
        }
        else {
          nc = 0;
        }
      }








>



|



<







4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269

4270
4271
4272
4273
4274
4275
4276
        else {
          failf(data, "Unsupported HTTP version in response");
          return CURLE_UNSUPPORTED_PROTOCOL;
        }
      }
      else if(conn->handler->protocol & CURLPROTO_RTSP) {
        char separator;
        int rtspversion;
        nc = sscanf(HEADER1,
                    " RTSP/%1d.%1d%c%3d",
                    &rtspversion_major,
                    &rtspversion,
                    &separator,
                    &k->httpcode);
        if((nc == 4) && (' ' == separator)) {

          conn->httpversion = 11; /* For us, RTSP acts like HTTP 1.1 */
        }
        else {
          nc = 0;
        }
      }

Changes to jni/curl/lib/http.h.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
char *Curl_checkProxyheaders(struct Curl_easy *data,
                             const struct connectdata *conn,
                             const char *thisheader);
#ifndef USE_HYPER
CURLcode Curl_buffer_send(struct dynbuf *in,
                          struct Curl_easy *data,
                          curl_off_t *bytes_written,
                          size_t included_body_bytes,
                          int socketindex);
#else
#define Curl_buffer_send(a,b,c,d,e) CURLE_OK
#endif

CURLcode Curl_add_timecondition(struct Curl_easy *data,
#ifndef USE_HYPER







|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
char *Curl_checkProxyheaders(struct Curl_easy *data,
                             const struct connectdata *conn,
                             const char *thisheader);
#ifndef USE_HYPER
CURLcode Curl_buffer_send(struct dynbuf *in,
                          struct Curl_easy *data,
                          curl_off_t *bytes_written,
                          curl_off_t included_body_bytes,
                          int socketindex);
#else
#define Curl_buffer_send(a,b,c,d,e) CURLE_OK
#endif

CURLcode Curl_add_timecondition(struct Curl_easy *data,
#ifndef USE_HYPER
247
248
249
250
251
252
253
254
255
256








257
258
259
260
261
262
263
  bool enable_push;
};
#endif

struct http_conn {
#ifdef USE_NGHTTP2
#define H2_BINSETTINGS_LEN 80
  nghttp2_session *h2;
  uint8_t binsettings[H2_BINSETTINGS_LEN];
  size_t  binlen; /* length of the binsettings data */








  Curl_send *send_underlying; /* underlying send Curl_send callback */
  Curl_recv *recv_underlying; /* underlying recv Curl_recv callback */
  char *inbuf; /* buffer to receive data from underlying socket */
  size_t inbuflen; /* number of bytes filled in inbuf */
  size_t nread_inbuf; /* number of bytes read from in inbuf */
  /* We need separate buffer for transmission and reception because we
     may call nghttp2_session_send() after the







<


>
>
>
>
>
>
>
>







247
248
249
250
251
252
253

254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
  bool enable_push;
};
#endif

struct http_conn {
#ifdef USE_NGHTTP2
#define H2_BINSETTINGS_LEN 80

  uint8_t binsettings[H2_BINSETTINGS_LEN];
  size_t  binlen; /* length of the binsettings data */

  /* We associate the connnectdata struct with the connection, but we need to
     make sure we can identify the current "driving" transfer. This is a
     work-around for the lack of nghttp2_session_set_user_data() in older
     nghttp2 versions that we want to support. (Added in 1.31.0) */
  struct Curl_easy *trnsfr;

  nghttp2_session *h2;
  Curl_send *send_underlying; /* underlying send Curl_send callback */
  Curl_recv *recv_underlying; /* underlying recv Curl_recv callback */
  char *inbuf; /* buffer to receive data from underlying socket */
  size_t inbuflen; /* number of bytes filled in inbuf */
  size_t nread_inbuf; /* number of bytes read from in inbuf */
  /* We need separate buffer for transmission and reception because we
     may call nghttp2_session_send() after the
Changes to jni/curl/lib/http2.c.
206
207
208
209
210
211
212


















213
214
215
216
217
218
219
        /* the read failed so let's say this is dead anyway */
        dead = TRUE;
    }
  }

  return dead;
}



















static unsigned int http2_conncheck(struct Curl_easy *data,
                                    struct connectdata *conn,
                                    unsigned int checks_to_perform)
{
  unsigned int ret_val = CONNRESULT_NONE;
  struct http_conn *c = &conn->proto.httpc;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
        /* the read failed so let's say this is dead anyway */
        dead = TRUE;
    }
  }

  return dead;
}

/*
 * Set the transfer that is currently using this HTTP/2 connection.
 */
static void set_transfer(struct http_conn *c,
                         struct Curl_easy *data)
{
  c->trnsfr = data;
}

/*
 * Get the transfer that is currently using this HTTP/2 connection.
 */
static struct Curl_easy *get_transfer(struct http_conn *c)
{
  DEBUGASSERT(c && c->trnsfr);
  return c->trnsfr;
}

static unsigned int http2_conncheck(struct Curl_easy *data,
                                    struct connectdata *conn,
                                    unsigned int checks_to_perform)
{
  unsigned int ret_val = CONNRESULT_NONE;
  struct http_conn *c = &conn->proto.httpc;
243
244
245
246
247
248
249

250
251
252
253
254
255
256
      }

      conn->keepalive = now;
    }
  }

  if(send_frames) {

    rc = nghttp2_session_send(c->h2);
    if(rc)
      failf(data, "nghttp2_session_send() failed: %s(%d)",
            nghttp2_strerror(rc), rc);
  }

  return ret_val;







>







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
      }

      conn->keepalive = now;
    }
  }

  if(send_frames) {
    set_transfer(c, data); /* set the transfer */
    rc = nghttp2_session_send(c->h2);
    if(rc)
      failf(data, "nghttp2_session_send() failed: %s(%d)",
            nghttp2_strerror(rc), rc);
  }

  return ret_val;
345
346
347
348
349
350
351

352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
 */
static ssize_t send_callback(nghttp2_session *h2,
                             const uint8_t *mem, size_t length, int flags,
                             void *userp)
{
  struct connectdata *conn = (struct connectdata *)userp;
  struct http_conn *c = &conn->proto.httpc;

  ssize_t written;
  CURLcode result = CURLE_OK;

  (void)h2;
  (void)flags;

  if(!c->send_underlying)
    /* called before setup properly! */
    return NGHTTP2_ERR_CALLBACK_FAILURE;

  written = ((Curl_send*)c->send_underlying)(conn->data, FIRSTSOCKET,
                                             mem, length, &result);

  if(result == CURLE_AGAIN) {
    return NGHTTP2_ERR_WOULDBLOCK;
  }

  if(written == -1) {
    failf(conn->data, "Failed sending HTTP2 data");
    return NGHTTP2_ERR_CALLBACK_FAILURE;
  }

  if(!written)
    return NGHTTP2_ERR_WOULDBLOCK;

  return written;







>










|







|







364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
 */
static ssize_t send_callback(nghttp2_session *h2,
                             const uint8_t *mem, size_t length, int flags,
                             void *userp)
{
  struct connectdata *conn = (struct connectdata *)userp;
  struct http_conn *c = &conn->proto.httpc;
  struct Curl_easy *data = get_transfer(c);
  ssize_t written;
  CURLcode result = CURLE_OK;

  (void)h2;
  (void)flags;

  if(!c->send_underlying)
    /* called before setup properly! */
    return NGHTTP2_ERR_CALLBACK_FAILURE;

  written = ((Curl_send*)c->send_underlying)(data, FIRSTSOCKET,
                                             mem, length, &result);

  if(result == CURLE_AGAIN) {
    return NGHTTP2_ERR_WOULDBLOCK;
  }

  if(written == -1) {
    failf(data, "Failed sending HTTP2 data");
    return NGHTTP2_ERR_CALLBACK_FAILURE;
  }

  if(!written)
    return NGHTTP2_ERR_WOULDBLOCK;

  return written;
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
  }

  uc = curl_url_get(u, CURLUPART_URL, &url, 0);
  if(uc)
    return 4;
  curl_url_cleanup(u);

  if(data->change.url_alloc)
    free(data->change.url);
  data->change.url_alloc = TRUE;
  data->change.url = url;
  return 0;
}

static int push_promise(struct Curl_easy *data,
                        struct connectdata *conn,
                        const nghttp2_push_promise *frame)
{







|
|
|
|







523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
  }

  uc = curl_url_get(u, CURLUPART_URL, &url, 0);
  if(uc)
    return 4;
  curl_url_cleanup(u);

  if(data->state.url_alloc)
    free(data->state.url);
  data->state.url_alloc = TRUE;
  data->state.url = url;
  return 0;
}

static int push_promise(struct Curl_easy *data,
                        struct connectdata *conn,
                        const nghttp2_push_promise *frame)
{
629
630
631
632
633
634
635

636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
                         void *userp)
{
  struct connectdata *conn = (struct connectdata *)userp;
  struct http_conn *httpc = &conn->proto.httpc;
  struct Curl_easy *data_s = NULL;
  struct HTTP *stream = NULL;

  int rv;
  size_t left, ncopy;
  int32_t stream_id = frame->hd.stream_id;
  CURLcode result;

  if(!stream_id) {
    /* stream ID zero is for connection-oriented stuff */
    if(frame->hd.type == NGHTTP2_SETTINGS) {
      uint32_t max_conn = httpc->settings.max_concurrent_streams;
      H2BUGF(infof(conn->data, "Got SETTINGS\n"));
      httpc->settings.max_concurrent_streams =
        nghttp2_session_get_remote_settings(
          session, NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS);
      httpc->settings.enable_push =
        nghttp2_session_get_remote_settings(
          session, NGHTTP2_SETTINGS_ENABLE_PUSH);
      H2BUGF(infof(conn->data, "MAX_CONCURRENT_STREAMS == %d\n",
                   httpc->settings.max_concurrent_streams));
      H2BUGF(infof(conn->data, "ENABLE_PUSH == %s\n",
                   httpc->settings.enable_push?"TRUE":"false"));
      if(max_conn != httpc->settings.max_concurrent_streams) {
        /* only signal change if the value actually changed */
        infof(conn->data,
              "Connection state changed (MAX_CONCURRENT_STREAMS == %u)!\n",
              httpc->settings.max_concurrent_streams);
        multi_connchanged(conn->data->multi);
      }
    }
    return 0;
  }
  data_s = nghttp2_session_get_stream_user_data(session, stream_id);
  if(!data_s) {
    H2BUGF(infof(conn->data,
                 "No Curl_easy associated with stream: %x\n",
                 stream_id));
    return 0;
  }

  stream = data_s->req.p.http;
  if(!stream) {







>









|






|

|



|


|






|







649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
                         void *userp)
{
  struct connectdata *conn = (struct connectdata *)userp;
  struct http_conn *httpc = &conn->proto.httpc;
  struct Curl_easy *data_s = NULL;
  struct HTTP *stream = NULL;
  struct Curl_easy *data = get_transfer(httpc);
  int rv;
  size_t left, ncopy;
  int32_t stream_id = frame->hd.stream_id;
  CURLcode result;

  if(!stream_id) {
    /* stream ID zero is for connection-oriented stuff */
    if(frame->hd.type == NGHTTP2_SETTINGS) {
      uint32_t max_conn = httpc->settings.max_concurrent_streams;
      H2BUGF(infof(data, "Got SETTINGS\n"));
      httpc->settings.max_concurrent_streams =
        nghttp2_session_get_remote_settings(
          session, NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS);
      httpc->settings.enable_push =
        nghttp2_session_get_remote_settings(
          session, NGHTTP2_SETTINGS_ENABLE_PUSH);
      H2BUGF(infof(data, "MAX_CONCURRENT_STREAMS == %d\n",
                   httpc->settings.max_concurrent_streams));
      H2BUGF(infof(data, "ENABLE_PUSH == %s\n",
                   httpc->settings.enable_push?"TRUE":"false"));
      if(max_conn != httpc->settings.max_concurrent_streams) {
        /* only signal change if the value actually changed */
        infof(data,
              "Connection state changed (MAX_CONCURRENT_STREAMS == %u)!\n",
              httpc->settings.max_concurrent_streams);
        multi_connchanged(data->multi);
      }
    }
    return 0;
  }
  data_s = nghttp2_session_get_stream_user_data(session, stream_id);
  if(!data_s) {
    H2BUGF(infof(data,
                 "No Curl_easy associated with stream: %x\n",
                 stream_id));
    return 0;
  }

  stream = data_s->req.p.http;
  if(!stream) {
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
    H2BUGF(infof(data_s, "Store %zu bytes headers from stream %u at %p\n",
                 ncopy, stream_id, stream->mem));

    stream->len -= ncopy;
    stream->memlen += ncopy;

    drain_this(data_s, httpc);
    {
      /* get the pointer from userp again since it was re-assigned above */
      struct connectdata *conn_s = (struct connectdata *)userp;

      /* if we receive data for another handle, wake that up */
      if(conn_s->data != data_s)
        Curl_expire(data_s, 0, EXPIRE_RUN_NOW);
    }
    break;
  case NGHTTP2_PUSH_PROMISE:
    rv = push_promise(data_s, conn, &frame->push_promise);
    if(rv) { /* deny! */
      int h2;
      DEBUGASSERT((rv > CURL_PUSH_OK) && (rv <= CURL_PUSH_ERROROUT));
      h2 = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,







<
<
<
<
|
|
|
<







750
751
752
753
754
755
756




757
758
759

760
761
762
763
764
765
766
    H2BUGF(infof(data_s, "Store %zu bytes headers from stream %u at %p\n",
                 ncopy, stream_id, stream->mem));

    stream->len -= ncopy;
    stream->memlen += ncopy;

    drain_this(data_s, httpc);




    /* if we receive data for another handle, wake that up */
    if(get_transfer(httpc) != data_s)
      Curl_expire(data_s, 0, EXPIRE_RUN_NOW);

    break;
  case NGHTTP2_PUSH_PROMISE:
    rv = push_promise(data_s, conn, &frame->push_promise);
    if(rv) { /* deny! */
      int h2;
      DEBUGASSERT((rv > CURL_PUSH_OK) && (rv <= CURL_PUSH_ERROROUT));
      h2 = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
764
765
766
767
768
769
770
771
772
773
774
775
776

777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
    break;
  }
  return 0;
}

static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
                              int32_t stream_id,
                              const uint8_t *data, size_t len, void *userp)
{
  struct HTTP *stream;
  struct Curl_easy *data_s;
  size_t nread;
  struct connectdata *conn = (struct connectdata *)userp;

  (void)session;
  (void)flags;
  (void)data;

  DEBUGASSERT(stream_id); /* should never be a zero stream ID here */

  /* get the stream from the hash based on Stream ID */
  data_s = nghttp2_session_get_stream_user_data(session, stream_id);
  if(!data_s)
    /* Receiving a Stream ID not in the hash should not happen, this is an
       internal error more than anything else! */
    return NGHTTP2_ERR_CALLBACK_FAILURE;

  stream = data_s->req.p.http;
  if(!stream)
    return NGHTTP2_ERR_CALLBACK_FAILURE;

  nread = CURLMIN(stream->len, len);
  memcpy(&stream->mem[stream->memlen], data, nread);

  stream->len -= nread;
  stream->memlen += nread;

  drain_this(data_s, &conn->proto.httpc);

  /* if we receive data for another handle, wake that up */
  if(conn->data != data_s)
    Curl_expire(data_s, 0, EXPIRE_RUN_NOW);

  H2BUGF(infof(data_s, "%zu data received for stream %u "
               "(%zu left in buffer %p, total %zu)\n",
               nread, stream_id,
               stream->len, stream->mem,
               stream->memlen));

  if(nread < len) {
    stream->pausedata = data + nread;
    stream->pauselen = len - nread;
    H2BUGF(infof(data_s, "NGHTTP2_ERR_PAUSE - %zu bytes out of buffer"
                 ", stream %u\n",
                 len - nread, stream_id));
    data_s->conn->proto.httpc.pause_stream_id = stream_id;

    return NGHTTP2_ERR_PAUSE;
  }

  /* pause execution of nghttp2 if we received data for another handle
     in order to process them first. */
  if(conn->data != data_s) {
    data_s->conn->proto.httpc.pause_stream_id = stream_id;

    return NGHTTP2_ERR_PAUSE;
  }

  return 0;
}







|





>


<















|







|









|











|







780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795

796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
    break;
  }
  return 0;
}

static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
                              int32_t stream_id,
                              const uint8_t *mem, size_t len, void *userp)
{
  struct HTTP *stream;
  struct Curl_easy *data_s;
  size_t nread;
  struct connectdata *conn = (struct connectdata *)userp;
  struct http_conn *httpc = &conn->proto.httpc;
  (void)session;
  (void)flags;


  DEBUGASSERT(stream_id); /* should never be a zero stream ID here */

  /* get the stream from the hash based on Stream ID */
  data_s = nghttp2_session_get_stream_user_data(session, stream_id);
  if(!data_s)
    /* Receiving a Stream ID not in the hash should not happen, this is an
       internal error more than anything else! */
    return NGHTTP2_ERR_CALLBACK_FAILURE;

  stream = data_s->req.p.http;
  if(!stream)
    return NGHTTP2_ERR_CALLBACK_FAILURE;

  nread = CURLMIN(stream->len, len);
  memcpy(&stream->mem[stream->memlen], mem, nread);

  stream->len -= nread;
  stream->memlen += nread;

  drain_this(data_s, &conn->proto.httpc);

  /* if we receive data for another handle, wake that up */
  if(get_transfer(httpc) != data_s)
    Curl_expire(data_s, 0, EXPIRE_RUN_NOW);

  H2BUGF(infof(data_s, "%zu data received for stream %u "
               "(%zu left in buffer %p, total %zu)\n",
               nread, stream_id,
               stream->len, stream->mem,
               stream->memlen));

  if(nread < len) {
    stream->pausedata = mem + nread;
    stream->pauselen = len - nread;
    H2BUGF(infof(data_s, "NGHTTP2_ERR_PAUSE - %zu bytes out of buffer"
                 ", stream %u\n",
                 len - nread, stream_id));
    data_s->conn->proto.httpc.pause_stream_id = stream_id;

    return NGHTTP2_ERR_PAUSE;
  }

  /* pause execution of nghttp2 if we received data for another handle
     in order to process them first. */
  if(get_transfer(httpc) != data_s) {
    data_s->conn->proto.httpc.pause_stream_id = stream_id;

    return NGHTTP2_ERR_PAUSE;
  }

  return 0;
}
940
941
942
943
944
945
946

947
948
949
950
951
952
953
                     uint8_t flags,
                     void *userp)
{
  struct HTTP *stream;
  struct Curl_easy *data_s;
  int32_t stream_id = frame->hd.stream_id;
  struct connectdata *conn = (struct connectdata *)userp;

  CURLcode result;
  (void)flags;

  DEBUGASSERT(stream_id); /* should never be a zero stream ID here */

  /* get the stream from the hash based on Stream ID */
  data_s = nghttp2_session_get_stream_user_data(session, stream_id);







>







956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
                     uint8_t flags,
                     void *userp)
{
  struct HTTP *stream;
  struct Curl_easy *data_s;
  int32_t stream_id = frame->hd.stream_id;
  struct connectdata *conn = (struct connectdata *)userp;
  struct http_conn *httpc = &conn->proto.httpc;
  CURLcode result;
  (void)flags;

  DEBUGASSERT(stream_id); /* should never be a zero stream ID here */

  /* get the stream from the hash based on Stream ID */
  data_s = nghttp2_session_get_stream_user_data(session, stream_id);
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
    if(result)
      return NGHTTP2_ERR_CALLBACK_FAILURE;
    /* the space character after the status code is mandatory */
    result = Curl_dyn_add(&stream->header_recvbuf, " \r\n");
    if(result)
      return NGHTTP2_ERR_CALLBACK_FAILURE;
    /* if we receive data for another handle, wake that up */
    if(conn->data != data_s)
      Curl_expire(data_s, 0, EXPIRE_RUN_NOW);

    H2BUGF(infof(data_s, "h2 status: HTTP/2 %03d (easy %p)\n",
                 stream->status_code, data_s));
    return 0;
  }








|







1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
    if(result)
      return NGHTTP2_ERR_CALLBACK_FAILURE;
    /* the space character after the status code is mandatory */
    result = Curl_dyn_add(&stream->header_recvbuf, " \r\n");
    if(result)
      return NGHTTP2_ERR_CALLBACK_FAILURE;
    /* if we receive data for another handle, wake that up */
    if(get_transfer(httpc) != data_s)
      Curl_expire(data_s, 0, EXPIRE_RUN_NOW);

    H2BUGF(infof(data_s, "h2 status: HTTP/2 %03d (easy %p)\n",
                 stream->status_code, data_s));
    return 0;
  }

1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
  result = Curl_dyn_addn(&stream->header_recvbuf, value, valuelen);
  if(result)
    return NGHTTP2_ERR_CALLBACK_FAILURE;
  result = Curl_dyn_add(&stream->header_recvbuf, "\r\n");
  if(result)
    return NGHTTP2_ERR_CALLBACK_FAILURE;
  /* if we receive data for another handle, wake that up */
  if(conn->data != data_s)
    Curl_expire(data_s, 0, EXPIRE_RUN_NOW);

  H2BUGF(infof(data_s, "h2 header: %.*s: %.*s\n", namelen, name, valuelen,
               value));

  return 0; /* 0 is successful */
}







|







1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
  result = Curl_dyn_addn(&stream->header_recvbuf, value, valuelen);
  if(result)
    return NGHTTP2_ERR_CALLBACK_FAILURE;
  result = Curl_dyn_add(&stream->header_recvbuf, "\r\n");
  if(result)
    return NGHTTP2_ERR_CALLBACK_FAILURE;
  /* if we receive data for another handle, wake that up */
  if(get_transfer(httpc) != data_s)
    Curl_expire(data_s, 0, EXPIRE_RUN_NOW);

  H2BUGF(infof(data_s, "h2 header: %.*s: %.*s\n", namelen, name, valuelen,
               value));

  return 0; /* 0 is successful */
}
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143


1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168

#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
static int error_callback(nghttp2_session *session,
                          const char *msg,
                          size_t len,
                          void *userp)
{
  struct connectdata *conn = (struct connectdata *)userp;
  (void)session;
  infof(conn->data, "http2 error: %.*s\n", len, msg);


  return 0;
}
#endif

static void populate_settings(struct connectdata *conn,
                              struct http_conn *httpc)
{
  nghttp2_settings_entry *iv = httpc->local_settings;
  DEBUGASSERT(conn->data);

  iv[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
  iv[0].value = Curl_multi_max_concurrent_streams(conn->data->multi);

  iv[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
  iv[1].value = HTTP2_HUGE_WINDOW_SIZE;

  iv[2].settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
  iv[2].value = conn->data->multi->push_cb != NULL;

  httpc->local_settings_num = 3;
}

void Curl_http2_done(struct Curl_easy *data, bool premature)
{
  struct HTTP *http = data->req.p.http;







<

|
>
>




|



<


|





|







1151
1152
1153
1154
1155
1156
1157

1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169

1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185

#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
static int error_callback(nghttp2_session *session,
                          const char *msg,
                          size_t len,
                          void *userp)
{

  (void)session;
  (void)msg;
  (void)len;
  (void)userp;
  return 0;
}
#endif

static void populate_settings(struct Curl_easy *data,
                              struct http_conn *httpc)
{
  nghttp2_settings_entry *iv = httpc->local_settings;


  iv[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
  iv[0].value = Curl_multi_max_concurrent_streams(data->multi);

  iv[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
  iv[1].value = HTTP2_HUGE_WINDOW_SIZE;

  iv[2].settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
  iv[2].value = data->multi->push_cb != NULL;

  httpc->local_settings_num = 3;
}

void Curl_http2_done(struct Curl_easy *data, bool premature)
{
  struct HTTP *http = data->req.p.http;
1183
1184
1185
1186
1187
1188
1189

1190
1191
1192
1193
1194
1195
1196

  if(!(data->conn->handler->protocol&PROTO_FAMILY_HTTP) ||
     !httpc->h2) /* not HTTP/2 ? */
    return;

  if(premature) {
    /* RST_STREAM */

    if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE,
                                  http->stream_id, NGHTTP2_STREAM_CLOSED))
      (void)nghttp2_session_send(httpc->h2);

    if(http->stream_id == httpc->pause_stream_id) {
      infof(data, "stopped the pause stream!\n");
      httpc->pause_stream_id = 0;







>







1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214

  if(!(data->conn->handler->protocol&PROTO_FAMILY_HTTP) ||
     !httpc->h2) /* not HTTP/2 ? */
    return;

  if(premature) {
    /* RST_STREAM */
    set_transfer(httpc, data); /* set the transfer */
    if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE,
                                  http->stream_id, NGHTTP2_STREAM_CLOSED))
      (void)nghttp2_session_send(httpc->h2);

    if(http->stream_id == httpc->pause_stream_id) {
      infof(data, "stopped the pause stream!\n");
      httpc->pause_stream_id = 0;
1205
1206
1207
1208
1209
1210
1211

1212
1213
1214
1215
1216
1217
1218
    int rv = nghttp2_session_set_stream_user_data(httpc->h2,
                                                  http->stream_id, 0);
    if(rv) {
      infof(data, "http/2: failed to clear user_data for stream %d!\n",
            http->stream_id);
      DEBUGASSERT(0);
    }

    http->stream_id = 0;
  }
}

/*
 * Initialize nghttp2 for a Curl connection
 */







>







1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
    int rv = nghttp2_session_set_stream_user_data(httpc->h2,
                                                  http->stream_id, 0);
    if(rv) {
      infof(data, "http/2: failed to clear user_data for stream %d!\n",
            http->stream_id);
      DEBUGASSERT(0);
    }
    set_transfer(httpc, NULL);
    http->stream_id = 0;
  }
}

/*
 * Initialize nghttp2 for a Curl connection
 */
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
  return CURLE_OK;
}

/*
 * Append headers to ask for a HTTP1.1 to HTTP2 upgrade.
 */
CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
                                    struct connectdata *conn)
{
  CURLcode result;
  ssize_t binlen;
  char *base64;
  size_t blen;
  struct Curl_easy *data = conn->data;
  struct SingleRequest *k = &data->req;
  uint8_t *binsettings = conn->proto.httpc.binsettings;
  struct http_conn *httpc = &conn->proto.httpc;

  populate_settings(conn, httpc);

  /* this returns number of bytes it wrote */
  binlen = nghttp2_pack_settings_payload(binsettings, H2_BINSETTINGS_LEN,
                                         httpc->local_settings,
                                         httpc->local_settings_num);
  if(binlen <= 0) {
    failf(data, "nghttp2 unexpectedly failed on pack_settings_payload");







|





|




|







1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
  return CURLE_OK;
}

/*
 * Append headers to ask for a HTTP1.1 to HTTP2 upgrade.
 */
CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
                                    struct Curl_easy *data)
{
  CURLcode result;
  ssize_t binlen;
  char *base64;
  size_t blen;
  struct connectdata *conn = data->conn;
  struct SingleRequest *k = &data->req;
  uint8_t *binsettings = conn->proto.httpc.binsettings;
  struct http_conn *httpc = &conn->proto.httpc;

  populate_settings(data, httpc);

  /* this returns number of bytes it wrote */
  binlen = nghttp2_pack_settings_payload(binsettings, H2_BINSETTINGS_LEN,
                                         httpc->local_settings,
                                         httpc->local_settings_num);
  if(binlen <= 0) {
    failf(data, "nghttp2 unexpectedly failed on pack_settings_payload");
1334
1335
1336
1337
1338
1339
1340

1341
1342
1343
1344
1345
1346
1347
  ssize_t nread;
  char *inbuf;
  ssize_t rv;

  nread = httpc->inbuflen - httpc->nread_inbuf;
  inbuf = httpc->inbuf + httpc->nread_inbuf;


  rv = nghttp2_session_mem_recv(httpc->h2, (const uint8_t *)inbuf, nread);
  if(rv < 0) {
    failf(data,
          "h2_process_pending_input: nghttp2_session_mem_recv() returned "
          "%zd:%s", rv, nghttp2_strerror((int)rv));
    *err = CURLE_RECV_ERROR;
    return -1;







>







1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
  ssize_t nread;
  char *inbuf;
  ssize_t rv;

  nread = httpc->inbuflen - httpc->nread_inbuf;
  inbuf = httpc->inbuf + httpc->nread_inbuf;

  set_transfer(httpc, data); /* set the transfer */
  rv = nghttp2_session_mem_recv(httpc->h2, (const uint8_t *)inbuf, nread);
  if(rv < 0) {
    failf(data,
          "h2_process_pending_input: nghttp2_session_mem_recv() returned "
          "%zd:%s", rv, nghttp2_strerror((int)rv));
    *err = CURLE_RECV_ERROR;
    return -1;
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435





1436
1437
1438
1439
1440
1441
1442
    /* If nghttp2 still has pending frames unsent */
    if(nghttp2_session_want_write(h2)) {
      struct SingleRequest *k = &data->req;
      int rv;

      H2BUGF(infof(data, "HTTP/2 still wants to send data (easy %p)\n", data));

      /* re-set KEEP_SEND to make sure we are called again */
      k->keepon |= KEEP_SEND;

      /* and attempt to send the pending frames */
      rv = h2_session_send(data, h2);
      if(rv != 0)
        result = CURLE_SEND_ERROR;





    }
  }
  return result;
}

static ssize_t http2_handle_stream_close(struct connectdata *conn,
                                         struct Curl_easy *data,







<
<
<




>
>
>
>
>







1442
1443
1444
1445
1446
1447
1448



1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
    /* If nghttp2 still has pending frames unsent */
    if(nghttp2_session_want_write(h2)) {
      struct SingleRequest *k = &data->req;
      int rv;

      H2BUGF(infof(data, "HTTP/2 still wants to send data (easy %p)\n", data));




      /* and attempt to send the pending frames */
      rv = h2_session_send(data, h2);
      if(rv != 0)
        result = CURLE_SEND_ERROR;

      if(nghttp2_session_want_write(h2)) {
         /* re-set KEEP_SEND to make sure we are called again */
         k->keepon |= KEEP_SEND;
      }
    }
  }
  return result;
}

static ssize_t http2_handle_stream_close(struct connectdata *conn,
                                         struct Curl_easy *data,
1538
1539
1540
1541
1542
1543
1544


1545
1546
1547
1548
1549
1550
1551
 * dependency settings and if so it submits a PRIORITY frame with the updated
 * info.
 */
static int h2_session_send(struct Curl_easy *data,
                           nghttp2_session *h2)
{
  struct HTTP *stream = data->req.p.http;


  if((data->set.stream_weight != data->state.stream_weight) ||
     (data->set.stream_depends_e != data->state.stream_depends_e) ||
     (data->set.stream_depends_on != data->state.stream_depends_on) ) {
    /* send new weight and/or dependency */
    nghttp2_priority_spec pri_spec;
    int rv;








>
>







1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
 * dependency settings and if so it submits a PRIORITY frame with the updated
 * info.
 */
static int h2_session_send(struct Curl_easy *data,
                           nghttp2_session *h2)
{
  struct HTTP *stream = data->req.p.http;
  struct http_conn *httpc = &data->conn->proto.httpc;
  set_transfer(httpc, data);
  if((data->set.stream_weight != data->state.stream_weight) ||
     (data->set.stream_depends_e != data->state.stream_depends_e) ||
     (data->set.stream_depends_on != data->state.stream_depends_on) ) {
    /* send new weight and/or dependency */
    nghttp2_priority_spec pri_spec;
    int rv;

1703
1704
1705
1706
1707
1708
1709











1710
1711
1712
1713
1714
1715
1716
          /* received when the stream was already closed! */
          return http2_handle_stream_close(conn, data, stream, err);

        return -1;
      }

      if(nread == 0) {











        H2BUGF(infof(data, "end of stream\n"));
        *err = CURLE_OK;
        return 0;
      }

      H2BUGF(infof(data, "nread=%zd\n", nread));








>
>
>
>
>
>
>
>
>
>
>







1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
          /* received when the stream was already closed! */
          return http2_handle_stream_close(conn, data, stream, err);

        return -1;
      }

      if(nread == 0) {
        if(!stream->closed) {
          /* This will happen when the server or proxy server is SIGKILLed
             during data transfer. We should emit an error since our data
             received may be incomplete. */
          failf(data, "HTTP/2 stream %d was not closed cleanly before"
                " end of the underlying stream",
                stream->stream_id);
          *err = CURLE_HTTP2_STREAM;
          return -1;
        }

        H2BUGF(infof(data, "end of stream\n"));
        *err = CURLE_OK;
        return 0;
      }

      H2BUGF(infof(data, "nread=%zd\n", nread));

2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
    return -1;
  }

  infof(data, "Using Stream ID: %x (easy handle %p)\n",
        stream_id, (void *)data);
  stream->stream_id = stream_id;

  /* this does not call h2_session_send() since there can not have been any
   * priority update since the nghttp2_submit_request() call above */
  rv = nghttp2_session_send(h2);
  if(rv != 0) {
    H2BUGF(infof(data,
                 "http2_send() nghttp2_session_send error (%s)%d\n",
                 nghttp2_strerror(rv), rv));

    *err = CURLE_SEND_ERROR;
    return -1;







<
<
|







2148
2149
2150
2151
2152
2153
2154


2155
2156
2157
2158
2159
2160
2161
2162
    return -1;
  }

  infof(data, "Using Stream ID: %x (easy handle %p)\n",
        stream_id, (void *)data);
  stream->stream_id = stream_id;



  rv = h2_session_send(data, h2);
  if(rv != 0) {
    H2BUGF(infof(data,
                 "http2_send() nghttp2_session_send error (%s)%d\n",
                 nghttp2_strerror(rv), rv));

    *err = CURLE_SEND_ERROR;
    return -1;
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
    if(rv) {
      infof(data, "http/2: failed to set user_data for stream %d!\n",
            stream->stream_id);
      DEBUGASSERT(0);
    }
  }
  else {
    populate_settings(conn, httpc);

    /* stream ID is unknown at this point */
    stream->stream_id = -1;
    rv = nghttp2_submit_settings(httpc->h2, NGHTTP2_FLAG_NONE,
                                 httpc->local_settings,
                                 httpc->local_settings_num);
    if(rv != 0) {







|







2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
    if(rv) {
      infof(data, "http/2: failed to set user_data for stream %d!\n",
            stream->stream_id);
      DEBUGASSERT(0);
    }
  }
  else {
    populate_settings(data, httpc);

    /* stream ID is unknown at this point */
    stream->stream_id = -1;
    rv = nghttp2_submit_settings(httpc->h2, NGHTTP2_FLAG_NONE,
                                 httpc->local_settings,
                                 httpc->local_settings_num);
    if(rv != 0) {
Changes to jni/curl/lib/http2.h.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

const char *Curl_http2_strerror(uint32_t err);

CURLcode Curl_http2_init(struct connectdata *conn);
void Curl_http2_init_state(struct UrlState *state);
void Curl_http2_init_userset(struct UserDefined *set);
CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
                                    struct connectdata *conn);
CURLcode Curl_http2_setup(struct Curl_easy *data, struct connectdata *conn);
CURLcode Curl_http2_switched(struct Curl_easy *data,
                             const char *ptr, size_t nread);
/* called from http_setup_conn */
void Curl_http2_setup_conn(struct connectdata *conn);
void Curl_http2_setup_req(struct Curl_easy *data);
void Curl_http2_done(struct Curl_easy *data, bool premature);







|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

const char *Curl_http2_strerror(uint32_t err);

CURLcode Curl_http2_init(struct connectdata *conn);
void Curl_http2_init_state(struct UrlState *state);
void Curl_http2_init_userset(struct UserDefined *set);
CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
                                    struct Curl_easy *data);
CURLcode Curl_http2_setup(struct Curl_easy *data, struct connectdata *conn);
CURLcode Curl_http2_switched(struct Curl_easy *data,
                             const char *ptr, size_t nread);
/* called from http_setup_conn */
void Curl_http2_setup_conn(struct connectdata *conn);
void Curl_http2_setup_req(struct Curl_easy *data);
void Curl_http2_done(struct Curl_easy *data, bool premature);
Changes to jni/curl/lib/http_aws_sigv4.c.
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  const char *post_data = data->set.postfields ? data->set.postfields : "";
  unsigned char sha_hash[32];
  char sha_hex[65];
  char *canonical_request = NULL;
  char *request_type = NULL;
  char *credential_scope = NULL;
  char *str_to_sign = NULL;
  const char *user = conn->user ? conn->user : "";
  const char *passwd = conn->passwd ? conn->passwd : "";
  char *secret = NULL;
  unsigned char tmp_sign0[32] = {0};
  unsigned char tmp_sign1[32] = {0};
  char *auth_headers = NULL;

  DEBUGASSERT(!proxy);
  (void)proxy;







|
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  const char *post_data = data->set.postfields ? data->set.postfields : "";
  unsigned char sha_hash[32];
  char sha_hex[65];
  char *canonical_request = NULL;
  char *request_type = NULL;
  char *credential_scope = NULL;
  char *str_to_sign = NULL;
  const char *user = data->state.aptr.user ? data->state.aptr.user : "";
  const char *passwd = data->state.aptr.passwd ? data->state.aptr.passwd : "";
  char *secret = NULL;
  unsigned char tmp_sign0[32] = {0};
  unsigned char tmp_sign1[32] = {0};
  char *auth_headers = NULL;

  DEBUGASSERT(!proxy);
  (void)proxy;
Changes to jni/curl/lib/http_digest.c.
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  while(*header && ISSPACE(*header))
    header++;

  return Curl_auth_decode_digest_http_message(header, digest);
}

CURLcode Curl_output_digest(struct Curl_easy *data,
                            struct connectdata *conn,
                            bool proxy,
                            const unsigned char *request,
                            const unsigned char *uripath)
{
  CURLcode result;
  unsigned char *path = NULL;
  char *tmp = NULL;







<







63
64
65
66
67
68
69

70
71
72
73
74
75
76
  while(*header && ISSPACE(*header))
    header++;

  return Curl_auth_decode_digest_http_message(header, digest);
}

CURLcode Curl_output_digest(struct Curl_easy *data,

                            bool proxy,
                            const unsigned char *request,
                            const unsigned char *uripath)
{
  CURLcode result;
  unsigned char *path = NULL;
  char *tmp = NULL;
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

  if(proxy) {
#ifdef CURL_DISABLE_PROXY
    return CURLE_NOT_BUILT_IN;
#else
    digest = &data->state.proxydigest;
    allocuserpwd = &data->state.aptr.proxyuserpwd;
    userp = conn->http_proxy.user;
    passwdp = conn->http_proxy.passwd;
    authp = &data->state.authproxy;
#endif
  }
  else {
    digest = &data->state.digest;
    allocuserpwd = &data->state.aptr.userpwd;
    userp = conn->user;
    passwdp = conn->passwd;
    authp = &data->state.authhost;
  }

  Curl_safefree(*allocuserpwd);

  /* not set means empty */
  if(!userp)







|
|






|
|







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

  if(proxy) {
#ifdef CURL_DISABLE_PROXY
    return CURLE_NOT_BUILT_IN;
#else
    digest = &data->state.proxydigest;
    allocuserpwd = &data->state.aptr.proxyuserpwd;
    userp = data->state.aptr.proxyuser;
    passwdp = data->state.aptr.proxypasswd;
    authp = &data->state.authproxy;
#endif
  }
  else {
    digest = &data->state.digest;
    allocuserpwd = &data->state.aptr.userpwd;
    userp = data->state.aptr.user;
    passwdp = data->state.aptr.passwd;
    authp = &data->state.authhost;
  }

  Curl_safefree(*allocuserpwd);

  /* not set means empty */
  if(!userp)
Changes to jni/curl/lib/http_digest.h.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* this is for digest header input */
CURLcode Curl_input_digest(struct Curl_easy *data,
                           bool proxy, const char *header);

/* this is for creating digest header output */
CURLcode Curl_output_digest(struct Curl_easy *data,
                            struct connectdata *conn,
                            bool proxy,
                            const unsigned char *request,
                            const unsigned char *uripath);

void Curl_http_auth_cleanup_digest(struct Curl_easy *data);

#endif /* !CURL_DISABLE_HTTP && !CURL_DISABLE_CRYPTO_AUTH */







<







27
28
29
30
31
32
33

34
35
36
37
38
39
40

/* this is for digest header input */
CURLcode Curl_input_digest(struct Curl_easy *data,
                           bool proxy, const char *header);

/* this is for creating digest header output */
CURLcode Curl_output_digest(struct Curl_easy *data,

                            bool proxy,
                            const unsigned char *request,
                            const unsigned char *uripath);

void Curl_http_auth_cleanup_digest(struct Curl_easy *data);

#endif /* !CURL_DISABLE_HTTP && !CURL_DISABLE_CRYPTO_AUTH */
Changes to jni/curl/lib/http_ntlm.c.
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167

  DEBUGASSERT(conn);
  DEBUGASSERT(data);

  if(proxy) {
#ifndef CURL_DISABLE_PROXY
    allocuserpwd = &data->state.aptr.proxyuserpwd;
    userp = conn->http_proxy.user;
    passwdp = conn->http_proxy.passwd;
    service = data->set.str[STRING_PROXY_SERVICE_NAME] ?
              data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP";
    hostname = conn->http_proxy.host.name;
    ntlm = &conn->proxyntlm;
    state = &conn->proxy_ntlm_state;
    authp = &data->state.authproxy;
#else
    return CURLE_NOT_BUILT_IN;
#endif
  }
  else {
    allocuserpwd = &data->state.aptr.userpwd;
    userp = conn->user;
    passwdp = conn->passwd;
    service = data->set.str[STRING_SERVICE_NAME] ?
              data->set.str[STRING_SERVICE_NAME] : "HTTP";
    hostname = conn->host.name;
    ntlm = &conn->ntlm;
    state = &conn->http_ntlm_state;
    authp = &data->state.authhost;
  }
  authp->done = FALSE;








|
|

|










|
|

|







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167

  DEBUGASSERT(conn);
  DEBUGASSERT(data);

  if(proxy) {
#ifndef CURL_DISABLE_PROXY
    allocuserpwd = &data->state.aptr.proxyuserpwd;
    userp = data->state.aptr.proxyuser;
    passwdp = data->state.aptr.proxypasswd;
    service = data->set.str[STRING_PROXY_SERVICE_NAME] ?
      data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP";
    hostname = conn->http_proxy.host.name;
    ntlm = &conn->proxyntlm;
    state = &conn->proxy_ntlm_state;
    authp = &data->state.authproxy;
#else
    return CURLE_NOT_BUILT_IN;
#endif
  }
  else {
    allocuserpwd = &data->state.aptr.userpwd;
    userp = data->state.aptr.user;
    passwdp = data->state.aptr.passwd;
    service = data->set.str[STRING_SERVICE_NAME] ?
      data->set.str[STRING_SERVICE_NAME] : "HTTP";
    hostname = conn->host.name;
    ntlm = &conn->ntlm;
    state = &conn->http_ntlm_state;
    authp = &data->state.authhost;
  }
  authp->done = FALSE;

Changes to jni/curl/lib/http_proxy.c.
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
        goto error;
      Curl_safefree(hostheader);

      /* default is 1.1 */
      if((conn->http_proxy.proxytype == CURLPROXY_HTTP_1_0) &&
         (HYPERE_OK != hyper_request_set_version(req,
                                                 HYPER_HTTP_VERSION_1_0))) {
        failf(data, "error settting HTTP version");
        goto error;
      }

      headers = hyper_request_headers(req);
      if(!headers) {
        failf(data, "hyper_request_headers");
        goto error;







|







755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
        goto error;
      Curl_safefree(hostheader);

      /* default is 1.1 */
      if((conn->http_proxy.proxytype == CURLPROXY_HTTP_1_0) &&
         (HYPERE_OK != hyper_request_set_version(req,
                                                 HYPER_HTTP_VERSION_1_0))) {
        failf(data, "error setting HTTP version");
        goto error;
      }

      headers = hyper_request_headers(req);
      if(!headers) {
        failf(data, "hyper_request_headers");
        goto error;
Changes to jni/curl/lib/imap.c.
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
  Curl_safefree(imap->section);
  Curl_safefree(imap->partial);
  Curl_safefree(imap->query);
  Curl_safefree(imap->custom);
  Curl_safefree(imap->custom_params);

  /* Clear the transfer mode for the next request */
  imap->transfer = FTPTRANSFER_BODY;

  return result;
}

/***********************************************************************
 *
 * imap_perform()







|







1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
  Curl_safefree(imap->section);
  Curl_safefree(imap->partial);
  Curl_safefree(imap->query);
  Curl_safefree(imap->custom);
  Curl_safefree(imap->custom_params);

  /* Clear the transfer mode for the next request */
  imap->transfer = PPTRANSFER_BODY;

  return result;
}

/***********************************************************************
 *
 * imap_perform()
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
  struct imap_conn *imapc = &conn->proto.imapc;
  bool selected = FALSE;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* Requested no body means no transfer */
    imap->transfer = FTPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* Determine if the requested mailbox (with the same UIDVALIDITY if set)
     has already been selected on this connection */
  if(imap->mailbox && imapc->mailbox &&







|







1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
  struct imap_conn *imapc = &conn->proto.imapc;
  bool selected = FALSE;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* Requested no body means no transfer */
    imap->transfer = PPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* Determine if the requested mailbox (with the same UIDVALIDITY if set)
     has already been selected on this connection */
  if(imap->mailbox && imapc->mailbox &&
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
/* Call this when the DO phase has completed */
static CURLcode imap_dophase_done(struct Curl_easy *data, bool connected)
{
  struct IMAP *imap = data->req.p.imap;

  (void)connected;

  if(imap->transfer != FTPTRANSFER_BODY)
    /* no data to transfer */
    Curl_setup_transfer(data, -1, -1, FALSE, -1);

  return CURLE_OK;
}

/* Called from multi.c while DOing */







|







1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
/* Call this when the DO phase has completed */
static CURLcode imap_dophase_done(struct Curl_easy *data, bool connected)
{
  struct IMAP *imap = data->req.p.imap;

  (void)connected;

  if(imap->transfer != PPTRANSFER_BODY)
    /* no data to transfer */
    Curl_setup_transfer(data, -1, -1, FALSE, -1);

  return CURLE_OK;
}

/* Called from multi.c while DOing */
Changes to jni/curl/lib/ldap.c.
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
#endif
  char *user = NULL;
  char *passwd = NULL;

  *done = TRUE; /* unconditionally */
  infof(data, "LDAP local: LDAP Vendor = %s ; LDAP Version = %d\n",
          LDAP_VENDOR_NAME, LDAP_VENDOR_VERSION);
  infof(data, "LDAP local: %s\n", data->change.url);

#ifdef HAVE_LDAP_URL_PARSE
  rc = ldap_url_parse(data->change.url, &ludp);
#else
  rc = _ldap_url_parse(data, conn, &ludp);
#endif
  if(rc != 0) {
    failf(data, "LDAP local: %s", ldap_err2string(rc));
    result = CURLE_LDAP_INVALID_URL;
    goto quit;







|


|







292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
#endif
  char *user = NULL;
  char *passwd = NULL;

  *done = TRUE; /* unconditionally */
  infof(data, "LDAP local: LDAP Vendor = %s ; LDAP Version = %d\n",
          LDAP_VENDOR_NAME, LDAP_VENDOR_VERSION);
  infof(data, "LDAP local: %s\n", data->state.url);

#ifdef HAVE_LDAP_URL_PARSE
  rc = ldap_url_parse(data->state.url, &ludp);
#else
  rc = _ldap_url_parse(data, conn, &ludp);
#endif
  if(rc != 0) {
    failf(data, "LDAP local: %s", ldap_err2string(rc));
    result = CURLE_LDAP_INVALID_URL;
    goto quit;
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
    }

#if defined(USE_WIN32_LDAP)
    /* Convert the unescaped string to a tchar */
    ludp->lud_dn = curlx_convert_UTF8_to_tchar(unescaped);

    /* Free the unescaped string as we are done with it */
    curlx_unicodefree(unescaped);

    if(!ludp->lud_dn) {
      rc = LDAP_NO_MEMORY;

      goto quit;
    }
#else







|







871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
    }

#if defined(USE_WIN32_LDAP)
    /* Convert the unescaped string to a tchar */
    ludp->lud_dn = curlx_convert_UTF8_to_tchar(unescaped);

    /* Free the unescaped string as we are done with it */
    free(unescaped);

    if(!ludp->lud_dn) {
      rc = LDAP_NO_MEMORY;

      goto quit;
    }
#else
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
      }

#if defined(USE_WIN32_LDAP)
      /* Convert the unescaped string to a tchar */
      ludp->lud_attrs[i] = curlx_convert_UTF8_to_tchar(unescaped);

      /* Free the unescaped string as we are done with it */
      curlx_unicodefree(unescaped);

      if(!ludp->lud_attrs[i]) {
        free(attributes);

        rc = LDAP_NO_MEMORY;

        goto quit;







|







939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
      }

#if defined(USE_WIN32_LDAP)
      /* Convert the unescaped string to a tchar */
      ludp->lud_attrs[i] = curlx_convert_UTF8_to_tchar(unescaped);

      /* Free the unescaped string as we are done with it */
      free(unescaped);

      if(!ludp->lud_attrs[i]) {
        free(attributes);

        rc = LDAP_NO_MEMORY;

        goto quit;
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
    }

#if defined(USE_WIN32_LDAP)
    /* Convert the unescaped string to a tchar */
    ludp->lud_filter = curlx_convert_UTF8_to_tchar(unescaped);

    /* Free the unescaped string as we are done with it */
    curlx_unicodefree(unescaped);

    if(!ludp->lud_filter) {
      rc = LDAP_NO_MEMORY;

      goto quit;
    }
#else







|







1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
    }

#if defined(USE_WIN32_LDAP)
    /* Convert the unescaped string to a tchar */
    ludp->lud_filter = curlx_convert_UTF8_to_tchar(unescaped);

    /* Free the unescaped string as we are done with it */
    free(unescaped);

    if(!ludp->lud_filter) {
      rc = LDAP_NO_MEMORY;

      goto quit;
    }
#else
Changes to jni/curl/lib/libcurl.plist.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
	<key>CFBundleExecutable</key>
	<string>curl</string>

	<key>CFBundleIdentifier</key>
	<string>se.curl.libcurl</string>

	<key>CFBundleVersion</key>
	<string>7.75.0</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.75.0</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.75.0</string>
</dict>
</plist>







|











|


|


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
	<key>CFBundleExecutable</key>
	<string>curl</string>

	<key>CFBundleIdentifier</key>
	<string>se.curl.libcurl</string>

	<key>CFBundleVersion</key>
	<string>7.76.0</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.76.0</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.76.0</string>
</dict>
</plist>
Changes to jni/curl/lib/md4.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <mbedtls/version.h>

#if(MBEDTLS_VERSION_NUMBER >= 0x02070000)
  #define HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

#if defined(USE_GNUTLS_NETTLE)

#include <nettle/md4.h>

#include "curl_memory.h"

/* The last #include file should be: */
#include "memdebug.h"







|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <mbedtls/version.h>

#if(MBEDTLS_VERSION_NUMBER >= 0x02070000)
  #define HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

#if defined(USE_GNUTLS)

#include <nettle/md4.h>

#include "curl_memory.h"

/* The last #include file should be: */
#include "memdebug.h"
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
}

static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
{
  md4_digest(ctx, MD4_DIGEST_SIZE, result);
}

#elif defined(USE_GNUTLS)

#include <gcrypt.h>

#include "curl_memory.h"

/* The last #include file should be: */
#include "memdebug.h"

typedef gcry_md_hd_t MD4_CTX;

static void MD4_Init(MD4_CTX *ctx)
{
  gcry_md_open(ctx, GCRY_MD_MD4, 0);
}

static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
{
  gcry_md_write(*ctx, data, size);
}

static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
{
  memcpy(result, gcry_md_read(*ctx, 0), MD4_DIGEST_LENGTH);
  gcry_md_close(*ctx);
}

#elif defined(USE_OPENSSL) && !defined(OPENSSL_NO_MD4)
/* When OpenSSL is available we use the MD4-functions from OpenSSL */
#include <openssl/md4.h>

#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
              (__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040) && \
       defined(__MAC_OS_X_VERSION_MIN_ALLOWED) && \







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







66
67
68
69
70
71
72



























73
74
75
76
77
78
79
}

static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
{
  md4_digest(ctx, MD4_DIGEST_SIZE, result);
}




























#elif defined(USE_OPENSSL) && !defined(OPENSSL_NO_MD4)
/* When OpenSSL is available we use the MD4-functions from OpenSSL */
#include <openssl/md4.h>

#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
              (__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040) && \
       defined(__MAC_OS_X_VERSION_MIN_ALLOWED) && \
Changes to jni/curl/lib/md5.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <mbedtls/version.h>

#if(MBEDTLS_VERSION_NUMBER >= 0x02070000)
  #define HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

#if defined(USE_GNUTLS_NETTLE)

#include <nettle/md5.h>
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"

typedef struct md5_ctx MD5_CTX;







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <mbedtls/version.h>

#if(MBEDTLS_VERSION_NUMBER >= 0x02070000)
  #define HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

#if defined(USE_GNUTLS)

#include <nettle/md5.h>
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"

typedef struct md5_ctx MD5_CTX;
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
}

static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
{
  md5_digest(ctx, 16, digest);
}

#elif defined(USE_GNUTLS)

#include <gcrypt.h>
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"

typedef gcry_md_hd_t MD5_CTX;

static void MD5_Init(MD5_CTX *ctx)
{
  gcry_md_open(ctx, GCRY_MD_MD5, 0);
}

static void MD5_Update(MD5_CTX *ctx,
                       const unsigned char *input,
                       unsigned int inputLen)
{
  gcry_md_write(*ctx, input, inputLen);
}

static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
{
  memcpy(digest, gcry_md_read(*ctx, 0), 16);
  gcry_md_close(*ctx);
}

#elif defined(USE_OPENSSL) && !defined(USE_AMISSL)
/* When OpenSSL is available we use the MD5-function from OpenSSL */
#include <openssl/md5.h>
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"








<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







60
61
62
63
64
65
66



























67
68
69
70
71
72
73
}

static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
{
  md5_digest(ctx, 16, digest);
}




























#elif defined(USE_OPENSSL) && !defined(USE_AMISSL)
/* When OpenSSL is available we use the MD5-function from OpenSSL */
#include <openssl/md5.h>
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"

Changes to jni/curl/lib/memdebug.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
51
52
53
54
55
56
57

58
59














60
61
62
63
64
65
66
67
68
69
70
71
72
73
74


75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 * remain so. For advanced analysis, record a log file and write perl scripts
 * to analyze them!
 *
 * Don't use these with multithreaded test programs!
 */

FILE *curl_dbg_logfile = NULL;

static bool memlimit = FALSE; /* enable memory limit */
static long memsize = 0;  /* set number of mallocs allowed */















/* this sets the log file name */
void curl_dbg_memdebug(const char *logname)
{
  if(!curl_dbg_logfile) {
    if(logname && *logname)
      curl_dbg_logfile = fopen(logname, FOPEN_WRITETEXT);
    else
      curl_dbg_logfile = stderr;
#ifdef MEMDEBUG_LOG_SYNC
    /* Flush the log file after every line so the log isn't lost in a crash */
    if(curl_dbg_logfile)
      setbuf(curl_dbg_logfile, (char *)NULL);
#endif
  }


}

/* This function sets the number of malloc() calls that should return
   successfully! */
void curl_dbg_memlimit(long limit)
{
  if(!memlimit) {
    memlimit = TRUE;
    memsize = limit;
  }
}

/* returns TRUE if this isn't allowed! */
static bool countcheck(const char *func, int line, const char *source)
{
  /* if source is NULL, then the call is made internally and this check
     should not be made */
  if(memlimit && source) {
    if(!memsize) {
      if(source) {
        /* log to file */
        curl_dbg_log("LIMIT %s:%d %s reached memlimit\n",
                     source, line, func);
        /* log to stderr also */
        fprintf(stderr, "LIMIT %s:%d %s reached memlimit\n",
                source, line, func);
        fflush(curl_dbg_logfile); /* because it might crash now */
      }
      errno = ENOMEM;
      return TRUE; /* RETURN ERROR! */
    }
    else
      memsize--; /* countdown */









>


>
>
>
>
>
>
>
>
>
>
>
>
>
>















>
>



















<
|
|
|
|
|
|
|
<







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

111
112
113
114
115
116
117

118
119
120
121
122
123
124
 * remain so. For advanced analysis, record a log file and write perl scripts
 * to analyze them!
 *
 * Don't use these with multithreaded test programs!
 */

FILE *curl_dbg_logfile = NULL;
static bool registered_cleanup = FALSE; /* atexit registered cleanup */
static bool memlimit = FALSE; /* enable memory limit */
static long memsize = 0;  /* set number of mallocs allowed */

/* LeakSantizier (LSAN) calls _exit() instead of exit() when a leak is detected
   on exit so the logfile must be closed explicitly or data could be lost.
   Though _exit() does not call atexit handlers such as this, LSAN's call to
   _exit() comes after the atexit handlers are called. curl/curl#6620 */
static void curl_dbg_cleanup(void)
{
  if(curl_dbg_logfile &&
     curl_dbg_logfile != stderr &&
     curl_dbg_logfile != stdout) {
    fclose(curl_dbg_logfile);
  }
  curl_dbg_logfile = NULL;
}

/* this sets the log file name */
void curl_dbg_memdebug(const char *logname)
{
  if(!curl_dbg_logfile) {
    if(logname && *logname)
      curl_dbg_logfile = fopen(logname, FOPEN_WRITETEXT);
    else
      curl_dbg_logfile = stderr;
#ifdef MEMDEBUG_LOG_SYNC
    /* Flush the log file after every line so the log isn't lost in a crash */
    if(curl_dbg_logfile)
      setbuf(curl_dbg_logfile, (char *)NULL);
#endif
  }
  if(!registered_cleanup)
    registered_cleanup = !atexit(curl_dbg_cleanup);
}

/* This function sets the number of malloc() calls that should return
   successfully! */
void curl_dbg_memlimit(long limit)
{
  if(!memlimit) {
    memlimit = TRUE;
    memsize = limit;
  }
}

/* returns TRUE if this isn't allowed! */
static bool countcheck(const char *func, int line, const char *source)
{
  /* if source is NULL, then the call is made internally and this check
     should not be made */
  if(memlimit && source) {
    if(!memsize) {

      /* log to file */
      curl_dbg_log("LIMIT %s:%d %s reached memlimit\n",
                   source, line, func);
      /* log to stderr also */
      fprintf(stderr, "LIMIT %s:%d %s reached memlimit\n",
              source, line, func);
      fflush(curl_dbg_logfile); /* because it might crash now */

      errno = ENOMEM;
      return TRUE; /* RETURN ERROR! */
    }
    else
      memsize--; /* countdown */


Changes to jni/curl/lib/multi.c.
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
static CURLMcode multi_timeout(struct Curl_multi *multi,
                               long *timeout_ms);
static void process_pending_handles(struct Curl_multi *multi);

#ifdef DEBUGBUILD
static const char * const statename[]={
  "INIT",
  "CONNECT_PEND",
  "CONNECT",
  "WAITRESOLVE",
  "WAITCONNECT",
  "WAITPROXYCONNECT",
  "SENDPROTOCONNECT",
  "PROTOCONNECT",
  "DO",
  "DOING",
  "DO_MORE",
  "DO_DONE",
  "PERFORM",
  "TOOFAST",
  "DONE",
  "COMPLETED",
  "MSGSENT",
};
#endif

/* function pointer called once when switching TO a state */
typedef void (*init_multistate_func)(struct Curl_easy *data);

/* called when the PERFORM state starts  */
static void init_perform(struct Curl_easy *data)
{
  data->req.chunk = FALSE;
  Curl_pgrsTime(data, TIMER_PRETRANSFER);
}

static void init_completed(struct Curl_easy *data)
{







|

|
|
|
|
|


|
|
|
|









|
|







79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
static CURLMcode multi_timeout(struct Curl_multi *multi,
                               long *timeout_ms);
static void process_pending_handles(struct Curl_multi *multi);

#ifdef DEBUGBUILD
static const char * const statename[]={
  "INIT",
  "PENDING",
  "CONNECT",
  "RESOLVING",
  "CONNECTING",
  "TUNNELING",
  "PROTOCONNECT",
  "PROTOCONNECTING",
  "DO",
  "DOING",
  "DOING_MORE",
  "DID",
  "PERFORMING",
  "RATELIMITING",
  "DONE",
  "COMPLETED",
  "MSGSENT",
};
#endif

/* function pointer called once when switching TO a state */
typedef void (*init_multistate_func)(struct Curl_easy *data);

/* called in DID state, before PERFORMING state */
static void before_perform(struct Curl_easy *data)
{
  data->req.chunk = FALSE;
  Curl_pgrsTime(data, TIMER_PRETRANSFER);
}

static void init_completed(struct Curl_easy *data)
{
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144

145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
static void mstate(struct Curl_easy *data, CURLMstate state
#ifdef DEBUGBUILD
                   , int lineno
#endif
)
{
  CURLMstate oldstate = data->mstate;
  static const init_multistate_func finit[CURLM_STATE_LAST] = {
    NULL,              /* INIT */
    NULL,              /* CONNECT_PEND */
    Curl_init_CONNECT, /* CONNECT */
    NULL,              /* WAITRESOLVE */
    NULL,              /* WAITCONNECT */
    NULL,              /* WAITPROXYCONNECT */
    NULL,              /* SENDPROTOCONNECT */
    NULL,              /* PROTOCONNECT */
    Curl_connect_free, /* DO */
    NULL,              /* DOING */
    NULL,              /* DO_MORE */

    NULL,              /* DO_DONE */
    init_perform,      /* PERFORM */
    NULL,              /* TOOFAST */
    NULL,              /* DONE */
    init_completed,    /* COMPLETED */
    NULL               /* MSGSENT */
  };

#if defined(DEBUGBUILD) && defined(CURL_DISABLE_VERBOSE_STRINGS)
  (void) lineno;
#endif

  if(oldstate == state)
    /* don't bother when the new state is the same as the old state */
    return;

  data->mstate = state;

#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
  if(data->mstate >= CURLM_STATE_CONNECT_PEND &&
     data->mstate < CURLM_STATE_COMPLETED) {
    long connection_id = -5000;

    if(data->conn)
      connection_id = data->conn->connection_id;

    infof(data,
          "STATE: %s => %s handle %p; line %d (connection #%ld)\n",
          statename[oldstate], statename[data->mstate],
          (void *)data, lineno, connection_id);
  }
#endif

  if(state == CURLM_STATE_COMPLETED) {
    /* changing to COMPLETED means there's one less easy handle 'alive' */
    DEBUGASSERT(data->multi->num_alive > 0);
    data->multi->num_alive--;
  }

  /* if this state has an init-function, run it */
  if(finit[state])







|

|

|
|
|
|
|


|
>
|
<
|
















|
|












|







126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
static void mstate(struct Curl_easy *data, CURLMstate state
#ifdef DEBUGBUILD
                   , int lineno
#endif
)
{
  CURLMstate oldstate = data->mstate;
  static const init_multistate_func finit[MSTATE_LAST] = {
    NULL,              /* INIT */
    NULL,              /* PENDING */
    Curl_init_CONNECT, /* CONNECT */
    NULL,              /* RESOLVING */
    NULL,              /* CONNECTING */
    NULL,              /* TUNNELING */
    NULL,              /* PROTOCONNECT */
    NULL,              /* PROTOCONNECTING */
    Curl_connect_free, /* DO */
    NULL,              /* DOING */
    NULL,              /* DOING_MORE */
    before_perform,    /* DID */
    NULL,              /* PERFORMING */

    NULL,              /* RATELIMITING */
    NULL,              /* DONE */
    init_completed,    /* COMPLETED */
    NULL               /* MSGSENT */
  };

#if defined(DEBUGBUILD) && defined(CURL_DISABLE_VERBOSE_STRINGS)
  (void) lineno;
#endif

  if(oldstate == state)
    /* don't bother when the new state is the same as the old state */
    return;

  data->mstate = state;

#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
  if(data->mstate >= MSTATE_PENDING &&
     data->mstate < MSTATE_COMPLETED) {
    long connection_id = -5000;

    if(data->conn)
      connection_id = data->conn->connection_id;

    infof(data,
          "STATE: %s => %s handle %p; line %d (connection #%ld)\n",
          statename[oldstate], statename[data->mstate],
          (void *)data, lineno, connection_id);
  }
#endif

  if(state == MSTATE_COMPLETED) {
    /* changing to COMPLETED means there's one less easy handle 'alive' */
    DEBUGASSERT(data->multi->num_alive > 0);
    data->multi->num_alive--;
  }

  /* if this state has an init-function, run it */
  if(finit[state])
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
   * potential multi's connection cache growing which won't be undone in this
   * function no matter what.
   */
  if(data->set.errorbuffer)
    data->set.errorbuffer[0] = 0;

  /* set the easy handle */
  multistate(data, CURLM_STATE_INIT);

  /* for multi interface connections, we share DNS cache automatically if the
     easy handle's one is currently not set. */
  if(!data->dns.hostcache ||
     (data->dns.hostcachetype == HCACHE_NONE)) {
    data->dns.hostcache = &multi->hostcache;
    data->dns.hostcachetype = HCACHE_MULTI;







|







443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
   * potential multi's connection cache growing which won't be undone in this
   * function no matter what.
   */
  if(data->set.errorbuffer)
    data->set.errorbuffer[0] = 0;

  /* set the easy handle */
  multistate(data, MSTATE_INIT);

  /* for multi interface connections, we share DNS cache automatically if the
     easy handle's one is currently not set. */
  if(!data->dns.hostcache ||
     (data->dns.hostcachetype == HCACHE_NONE)) {
    data->dns.hostcache = &multi->hostcache;
    data->dns.hostcachetype = HCACHE_MULTI;
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573

  DEBUGF(infof(data, "multi_done\n"));

  if(data->state.done)
    /* Stop if multi_done() has already been called */
    return CURLE_OK;

  conn->data = data; /* ensure the connection uses this transfer now */

  /* Stop the resolver and free its own resources (but not dns_entry yet). */
  Curl_resolver_kill(data);

  /* Cleanup possible redirect junk */
  Curl_safefree(data->req.newurl);
  Curl_safefree(data->req.location);








<
<







558
559
560
561
562
563
564


565
566
567
568
569
570
571

  DEBUGF(infof(data, "multi_done\n"));

  if(data->state.done)
    /* Stop if multi_done() has already been called */
    return CURLE_OK;



  /* Stop the resolver and free its own resources (but not dns_entry yet). */
  Curl_resolver_kill(data);

  /* Cleanup possible redirect junk */
  Curl_safefree(data->req.newurl);
  Curl_safefree(data->req.location);

600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623

  process_pending_handles(data->multi); /* connection / multiplex */

  CONNCACHE_LOCK(data);
  Curl_detach_connnection(data);
  if(CONN_INUSE(conn)) {
    /* Stop if still used. */
    /* conn->data must not remain pointing to this transfer since it is going
       away! Find another to own it! */
    conn->data = conn->easyq.head->ptr;
    CONNCACHE_UNLOCK(data);
    DEBUGF(infof(data, "Connection still in use %zu, "
                 "no more multi_done now!\n",
                 conn->easyq.size));
    return CURLE_OK;
  }
  conn->data = NULL; /* the connection now has no owner */
  data->state.done = TRUE; /* called just now! */

  if(conn->dns_entry) {
    Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
    conn->dns_entry = NULL;
  }
  Curl_hostcache_prune(data);







<
<
<






|







598
599
600
601
602
603
604



605
606
607
608
609
610
611
612
613
614
615
616
617
618

  process_pending_handles(data->multi); /* connection / multiplex */

  CONNCACHE_LOCK(data);
  Curl_detach_connnection(data);
  if(CONN_INUSE(conn)) {
    /* Stop if still used. */



    CONNCACHE_UNLOCK(data);
    DEBUGF(infof(data, "Connection still in use %zu, "
                 "no more multi_done now!\n",
                 conn->easyq.size));
    return CURLE_OK;
  }

  data->state.done = TRUE; /* called just now! */

  if(conn->dns_entry) {
    Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
    conn->dns_entry = NULL;
  }
  Curl_hostcache_prune(data);
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
}

CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
                                   struct Curl_easy *data)
{
  struct Curl_easy *easy = data;
  bool premature;
  bool easy_owns_conn;
  struct Curl_llist_element *e;

  /* First, make some basic checks that the CURLM handle is a good handle */
  if(!GOOD_MULTI_HANDLE(multi))
    return CURLM_BAD_HANDLE;

  /* Verify that we got a somewhat good easy handle too */







<







709
710
711
712
713
714
715

716
717
718
719
720
721
722
}

CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
                                   struct Curl_easy *data)
{
  struct Curl_easy *easy = data;
  bool premature;

  struct Curl_llist_element *e;

  /* First, make some basic checks that the CURLM handle is a good handle */
  if(!GOOD_MULTI_HANDLE(multi))
    return CURLM_BAD_HANDLE;

  /* Verify that we got a somewhat good easy handle too */
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
  /* Prevent users from trying to remove an easy handle from the wrong multi */
  if(data->multi != multi)
    return CURLM_BAD_EASY_HANDLE;

  if(multi->in_callback)
    return CURLM_RECURSIVE_API_CALL;

  premature = (data->mstate < CURLM_STATE_COMPLETED) ? TRUE : FALSE;
  easy_owns_conn = (data->conn && (data->conn->data == easy)) ?
    TRUE : FALSE;

  /* If the 'state' is not INIT or COMPLETED, we might need to do something
     nice to put the easy_handle in a good known state when this returns. */
  if(premature) {
    /* this handle is "alive" so we need to count down the total number of
       alive connections when this is removed */
    multi->num_alive--;
  }

  if(data->conn &&
     data->mstate > CURLM_STATE_DO &&
     data->mstate < CURLM_STATE_COMPLETED) {
    /* Set connection owner so that the DONE function closes it.  We can
       safely do this here since connection is killed. */
    data->conn->data = easy;
    streamclose(data->conn, "Removed with partial response");
    easy_owns_conn = TRUE;
  }

  if(data->conn) {

    /* we must call multi_done() here (if we still own the connection) so that
       we don't leave a half-baked one around */
    if(easy_owns_conn) {

      /* multi_done() clears the association between the easy handle and the
         connection.

         Note that this ignores the return code simply because there's
         nothing really useful to do with it anyway! */
      (void)multi_done(data, data->result, premature);
    }
  }

  /* The timer must be shut down before data->multi is set to NULL, else the
     timenode will remain in the splay tree after curl_easy_cleanup is
     called. Do it after multi_done() in case that sets another time! */
  Curl_expire_clear(data);








|
<
<










|
|


<

<



<
<
<
<
<
|
|

|
|
|
<







730
731
732
733
734
735
736
737


738
739
740
741
742
743
744
745
746
747
748
749
750
751

752

753
754
755





756
757
758
759
760
761

762
763
764
765
766
767
768
  /* Prevent users from trying to remove an easy handle from the wrong multi */
  if(data->multi != multi)
    return CURLM_BAD_EASY_HANDLE;

  if(multi->in_callback)
    return CURLM_RECURSIVE_API_CALL;

  premature = (data->mstate < MSTATE_COMPLETED) ? TRUE : FALSE;



  /* If the 'state' is not INIT or COMPLETED, we might need to do something
     nice to put the easy_handle in a good known state when this returns. */
  if(premature) {
    /* this handle is "alive" so we need to count down the total number of
       alive connections when this is removed */
    multi->num_alive--;
  }

  if(data->conn &&
     data->mstate > MSTATE_DO &&
     data->mstate < MSTATE_COMPLETED) {
    /* Set connection owner so that the DONE function closes it.  We can
       safely do this here since connection is killed. */

    streamclose(data->conn, "Removed with partial response");

  }

  if(data->conn) {





    /* multi_done() clears the association between the easy handle and the
       connection.

       Note that this ignores the return code simply because there's
       nothing really useful to do with it anyway! */
    (void)multi_done(data, data->result, premature);

  }

  /* The timer must be shut down before data->multi is set to NULL, else the
     timenode will remain in the splay tree after curl_easy_cleanup is
     called. Do it after multi_done() in case that sets another time! */
  Curl_expire_clear(data);

798
799
800
801
802
803
804
805
806
807
808
809
810
811
812

  /* destroy the timeout list that is held in the easy handle, do this *after*
     multi_done() as that may actually call Curl_expire that uses this */
  Curl_llist_destroy(&data->state.timeoutlist, NULL);

  /* change state without using multistate(), only to make singlesocket() do
     what we want */
  data->mstate = CURLM_STATE_COMPLETED;
  singlesocket(multi, easy); /* to let the application know what sockets that
                                vanish with this handle */

  /* Remove the association between the connection and the handle */
  Curl_detach_connnection(data);

  if(data->state.lastconnect_id != -1) {







|







782
783
784
785
786
787
788
789
790
791
792
793
794
795
796

  /* destroy the timeout list that is held in the easy handle, do this *after*
     multi_done() as that may actually call Curl_expire that uses this */
  Curl_llist_destroy(&data->state.timeoutlist, NULL);

  /* change state without using multistate(), only to make singlesocket() do
     what we want */
  data->mstate = MSTATE_COMPLETED;
  singlesocket(multi, easy); /* to let the application know what sockets that
                                vanish with this handle */

  /* Remove the association between the connection and the handle */
  Curl_detach_connnection(data);

  if(data->state.lastconnect_id != -1) {
835
836
837
838
839
840
841











842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857


858
859
860
861
862
863
864

    if(msg->extmsg.easy_handle == easy) {
      Curl_llist_remove(&multi->msglist, e, NULL);
      /* there can only be one from this specific handle */
      break;
    }
  }












  /* make the previous node point to our next */
  if(data->prev)
    data->prev->next = data->next;
  else
    multi->easyp = data->next; /* point to first node */

  /* make our next point to our previous node */
  if(data->next)
    data->next->prev = data->prev;
  else
    multi->easylp = data->prev; /* point to last node */

  /* NOTE NOTE NOTE
     We do not touch the easy handle here! */
  multi->num_easy--; /* one less to care about now */



  Curl_update_timer(multi);
  return CURLM_OK;
}

/* Return TRUE if the application asked for multiplexing */
bool Curl_multiplex_wanted(const struct Curl_multi *multi)







>
>
>
>
>
>
>
>
>
>
>
















>
>







819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861

    if(msg->extmsg.easy_handle == easy) {
      Curl_llist_remove(&multi->msglist, e, NULL);
      /* there can only be one from this specific handle */
      break;
    }
  }

  /* Remove from the pending list if it is there. Otherwise this will
     remain on the pending list forever due to the state change. */
  for(e = multi->pending.head; e; e = e->next) {
    struct Curl_easy *curr_data = e->ptr;

    if(curr_data == data) {
      Curl_llist_remove(&multi->pending, e, NULL);
      break;
    }
  }

  /* make the previous node point to our next */
  if(data->prev)
    data->prev->next = data->next;
  else
    multi->easyp = data->next; /* point to first node */

  /* make our next point to our previous node */
  if(data->next)
    data->next->prev = data->prev;
  else
    multi->easylp = data->prev; /* point to last node */

  /* NOTE NOTE NOTE
     We do not touch the easy handle here! */
  multi->num_easy--; /* one less to care about now */

  process_pending_handles(multi);

  Curl_update_timer(multi);
  return CURLM_OK;
}

/* Return TRUE if the application asked for multiplexing */
bool Curl_multiplex_wanted(const struct Curl_multi *multi)
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
  int i;
  int s = 0;
  int rc = 0;

#ifdef USE_SSL
#ifndef CURL_DISABLE_PROXY
  if(CONNECT_FIRSTSOCKET_PROXY_SSL())
    return Curl_ssl_getsock(conn, sock);
#endif
#endif

  if(SOCKS_STATE(conn->cnnct.state))
    return Curl_SOCKS_getsock(conn, sock, FIRSTSOCKET);

  for(i = 0; i<2; i++) {







|







898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
  int i;
  int s = 0;
  int rc = 0;

#ifdef USE_SSL
#ifndef CURL_DISABLE_PROXY
  if(CONNECT_FIRSTSOCKET_PROXY_SSL())
    return Curl_ssl->getsock(conn, sock);
#endif
#endif

  if(SOCKS_STATE(conn->cnnct.state))
    return Curl_SOCKS_getsock(conn, sock, FIRSTSOCKET);

  for(i = 0; i<2; i++) {
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
  struct connectdata *conn = data->conn;
  /* The no connection case can happen when this is called from
     curl_multi_remove_handle() => singlesocket() => multi_getsock().
  */
  if(!conn)
    return 0;

  if(data->mstate > CURLM_STATE_CONNECT &&
     data->mstate < CURLM_STATE_COMPLETED) {
    /* Set up ownership correctly */
    data->conn->data = data;
  }

  switch(data->mstate) {
  default:
    return 0;

  case CURLM_STATE_WAITRESOLVE:
    return Curl_resolv_getsock(data, socks);

  case CURLM_STATE_PROTOCONNECT:
  case CURLM_STATE_SENDPROTOCONNECT:
    return protocol_getsock(data, conn, socks);

  case CURLM_STATE_DO:
  case CURLM_STATE_DOING:
    return doing_getsock(data, conn, socks);

  case CURLM_STATE_WAITPROXYCONNECT:
    return waitproxyconnect_getsock(conn, socks);

  case CURLM_STATE_WAITCONNECT:
    return waitconnect_getsock(conn, socks);

  case CURLM_STATE_DO_MORE:
    return domore_getsock(data, conn, socks);

  case CURLM_STATE_DO_DONE: /* since is set after DO is completed, we switch
                               to waiting for the same as the *PERFORM
                               states */
  case CURLM_STATE_PERFORM:
    return Curl_single_getsock(data, conn, socks);
  }

}

CURLMcode curl_multi_fdset(struct Curl_multi *multi,
                           fd_set *read_fd_set, fd_set *write_fd_set,







<
<
<
<
<
<




|


|
|


|
|


|


|


|


|
|
<
|







977
978
979
980
981
982
983






984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009

1010
1011
1012
1013
1014
1015
1016
1017
  struct connectdata *conn = data->conn;
  /* The no connection case can happen when this is called from
     curl_multi_remove_handle() => singlesocket() => multi_getsock().
  */
  if(!conn)
    return 0;







  switch(data->mstate) {
  default:
    return 0;

  case MSTATE_RESOLVING:
    return Curl_resolv_getsock(data, socks);

  case MSTATE_PROTOCONNECTING:
  case MSTATE_PROTOCONNECT:
    return protocol_getsock(data, conn, socks);

  case MSTATE_DO:
  case MSTATE_DOING:
    return doing_getsock(data, conn, socks);

  case MSTATE_TUNNELING:
    return waitproxyconnect_getsock(conn, socks);

  case MSTATE_CONNECTING:
    return waitconnect_getsock(conn, socks);

  case MSTATE_DOING_MORE:
    return domore_getsock(data, conn, socks);

  case MSTATE_DID: /* since is set after DO is completed, we switch to
                        waiting for the same as the PERFORMING state */

  case MSTATE_PERFORMING:
    return Curl_single_getsock(data, conn, socks);
  }

}

CURLMcode curl_multi_fdset(struct Curl_multi *multi,
                           fd_set *read_fd_set, fd_set *write_fd_set,
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
    struct SingleRequest *k = &data->req;

    /* pass in NULL for 'conn' here since we don't want to init the
       connection, only this transfer */
    Curl_init_do(data, NULL);

    /* take this handle to the perform state right away */
    multistate(data, CURLM_STATE_PERFORM);
    Curl_attach_connnection(data, conn);
    k->keepon |= KEEP_RECV; /* setup to receive! */
  }
  return rc;
}

static CURLcode multi_do(struct Curl_easy *data, bool *done)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;

  DEBUGASSERT(conn);
  DEBUGASSERT(conn->handler);
  DEBUGASSERT(conn->data == data);

  if(conn->handler->do_it)
    /* generic protocol-specific function pointer set in curl_connect() */
    result = conn->handler->do_it(data, done);

  return result;
}







|













<







1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389

1390
1391
1392
1393
1394
1395
1396
    struct SingleRequest *k = &data->req;

    /* pass in NULL for 'conn' here since we don't want to init the
       connection, only this transfer */
    Curl_init_do(data, NULL);

    /* take this handle to the perform state right away */
    multistate(data, MSTATE_PERFORMING);
    Curl_attach_connnection(data, conn);
    k->keepon |= KEEP_RECV; /* setup to receive! */
  }
  return rc;
}

static CURLcode multi_do(struct Curl_easy *data, bool *done)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;

  DEBUGASSERT(conn);
  DEBUGASSERT(conn->handler);


  if(conn->handler->do_it)
    /* generic protocol-specific function pointer set in curl_connect() */
    result = conn->handler->do_it(data, done);

  return result;
}
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
    rc = CURLM_OK;

    if(multi_ischanged(multi, TRUE)) {
      DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!\n"));
      process_pending_handles(multi); /* multiplexed */
    }

    if(data->mstate > CURLM_STATE_CONNECT &&
       data->mstate < CURLM_STATE_COMPLETED) {
      /* Make sure we set the connection's current owner */
      DEBUGASSERT(data->conn);
      if(!data->conn)
        return CURLM_INTERNAL_ERROR;
      data->conn->data = data;
    }

    if(data->conn &&
       (data->mstate >= CURLM_STATE_CONNECT) &&
       (data->mstate < CURLM_STATE_COMPLETED)) {
      /* we need to wait for the connect state as only then is the start time
         stored, but we must not check already completed handles */
      timeout_ms = Curl_timeleft(data, nowp,
                                 (data->mstate <= CURLM_STATE_DO)?
                                 TRUE:FALSE);

      if(timeout_ms < 0) {
        /* Handle timed out */
        if(data->mstate == CURLM_STATE_WAITRESOLVE)
          failf(data, "Resolving timed out after %" CURL_FORMAT_TIMEDIFF_T
                " milliseconds",
                Curl_timediff(*nowp, data->progress.t_startsingle));
        else if(data->mstate == CURLM_STATE_WAITCONNECT)
          failf(data, "Connection timed out after %" CURL_FORMAT_TIMEDIFF_T
                " milliseconds",
                Curl_timediff(*nowp, data->progress.t_startsingle));
        else {
          struct SingleRequest *k = &data->req;
          if(k->size != -1) {
            failf(data, "Operation timed out after %" CURL_FORMAT_TIMEDIFF_T







|
|




<



|
|



|




|



|







1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575

1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
    rc = CURLM_OK;

    if(multi_ischanged(multi, TRUE)) {
      DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!\n"));
      process_pending_handles(multi); /* multiplexed */
    }

    if(data->mstate > MSTATE_CONNECT &&
       data->mstate < MSTATE_COMPLETED) {
      /* Make sure we set the connection's current owner */
      DEBUGASSERT(data->conn);
      if(!data->conn)
        return CURLM_INTERNAL_ERROR;

    }

    if(data->conn &&
       (data->mstate >= MSTATE_CONNECT) &&
       (data->mstate < MSTATE_COMPLETED)) {
      /* we need to wait for the connect state as only then is the start time
         stored, but we must not check already completed handles */
      timeout_ms = Curl_timeleft(data, nowp,
                                 (data->mstate <= MSTATE_DO)?
                                 TRUE:FALSE);

      if(timeout_ms < 0) {
        /* Handle timed out */
        if(data->mstate == MSTATE_RESOLVING)
          failf(data, "Resolving timed out after %" CURL_FORMAT_TIMEDIFF_T
                " milliseconds",
                Curl_timediff(*nowp, data->progress.t_startsingle));
        else if(data->mstate == MSTATE_CONNECTING)
          failf(data, "Connection timed out after %" CURL_FORMAT_TIMEDIFF_T
                " milliseconds",
                Curl_timediff(*nowp, data->progress.t_startsingle));
        else {
          struct SingleRequest *k = &data->req;
          if(k->size != -1) {
            failf(data, "Operation timed out after %" CURL_FORMAT_TIMEDIFF_T
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
                  " bytes received",
                  Curl_timediff(*nowp, data->progress.t_startsingle),
                  k->bytecount);
          }
        }

        /* Force connection closed if the connection has indeed been used */
        if(data->mstate > CURLM_STATE_DO) {
          streamclose(data->conn, "Disconnected with pending data");
          stream_error = TRUE;
        }
        result = CURLE_OPERATION_TIMEDOUT;
        (void)multi_done(data, result, TRUE);
        /* Skip the statemachine and go directly to error handling section. */
        goto statemachine_end;
      }
    }

    switch(data->mstate) {
    case CURLM_STATE_INIT:
      /* init this transfer. */
      result = Curl_pretransfer(data);

      if(!result) {
        /* after init, go CONNECT */
        multistate(data, CURLM_STATE_CONNECT);
        *nowp = Curl_pgrsTime(data, TIMER_STARTOP);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      break;

    case CURLM_STATE_CONNECT_PEND:
      /* We will stay here until there is a connection available. Then
         we try again in the CURLM_STATE_CONNECT state. */
      break;

    case CURLM_STATE_CONNECT:
      /* Connect. We want to get a connection identifier filled in. */
      /* init this transfer. */
      result = Curl_preconnect(data);
      if(result)
        break;

      *nowp = Curl_pgrsTime(data, TIMER_STARTSINGLE);
      if(data->set.timeout)
        Curl_expire(data, data->set.timeout, EXPIRE_TIMEOUT);

      if(data->set.connecttimeout)
        Curl_expire(data, data->set.connecttimeout, EXPIRE_CONNECTTIMEOUT);

      result = Curl_connect(data, &async, &protocol_connected);
      if(CURLE_NO_CONNECTION_AVAILABLE == result) {
        /* There was no connection available. We will go to the pending
           state and wait for an available connection. */
        multistate(data, CURLM_STATE_CONNECT_PEND);

        /* add this handle to the list of connect-pending handles */
        Curl_llist_insert_next(&multi->pending, multi->pending.tail, data,
                               &data->connect_queue);
        result = CURLE_OK;
        break;
      }
      else if(data->state.previouslypending) {
        /* this transfer comes from the pending queue so try move another */
        infof(data, "Transfer was pending, now try another\n");
        process_pending_handles(data->multi);
      }

      if(!result) {
        if(async)
          /* We're now waiting for an asynchronous name lookup */
          multistate(data, CURLM_STATE_WAITRESOLVE);
        else {
          /* after the connect has been sent off, go WAITCONNECT unless the
             protocol connect is already done and we can go directly to
             WAITDO or DO! */
          rc = CURLM_CALL_MULTI_PERFORM;

          if(protocol_connected)
            multistate(data, CURLM_STATE_DO);
          else {
#ifndef CURL_DISABLE_HTTP
            if(Curl_connect_ongoing(data->conn))
              multistate(data, CURLM_STATE_WAITPROXYCONNECT);
            else
#endif
              multistate(data, CURLM_STATE_WAITCONNECT);
          }
        }
      }
      break;

    case CURLM_STATE_WAITRESOLVE:
      /* awaiting an asynch name resolve to complete */
    {
      struct Curl_dns_entry *dns = NULL;
      struct connectdata *conn = data->conn;
      const char *hostname;

      DEBUGASSERT(conn);







|











|





|





|

|


|

















|
















|







|



|


|





|







1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
                  " bytes received",
                  Curl_timediff(*nowp, data->progress.t_startsingle),
                  k->bytecount);
          }
        }

        /* Force connection closed if the connection has indeed been used */
        if(data->mstate > MSTATE_DO) {
          streamclose(data->conn, "Disconnected with pending data");
          stream_error = TRUE;
        }
        result = CURLE_OPERATION_TIMEDOUT;
        (void)multi_done(data, result, TRUE);
        /* Skip the statemachine and go directly to error handling section. */
        goto statemachine_end;
      }
    }

    switch(data->mstate) {
    case MSTATE_INIT:
      /* init this transfer. */
      result = Curl_pretransfer(data);

      if(!result) {
        /* after init, go CONNECT */
        multistate(data, MSTATE_CONNECT);
        *nowp = Curl_pgrsTime(data, TIMER_STARTOP);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      break;

    case MSTATE_PENDING:
      /* We will stay here until there is a connection available. Then
         we try again in the MSTATE_CONNECT state. */
      break;

    case MSTATE_CONNECT:
      /* Connect. We want to get a connection identifier filled in. */
      /* init this transfer. */
      result = Curl_preconnect(data);
      if(result)
        break;

      *nowp = Curl_pgrsTime(data, TIMER_STARTSINGLE);
      if(data->set.timeout)
        Curl_expire(data, data->set.timeout, EXPIRE_TIMEOUT);

      if(data->set.connecttimeout)
        Curl_expire(data, data->set.connecttimeout, EXPIRE_CONNECTTIMEOUT);

      result = Curl_connect(data, &async, &protocol_connected);
      if(CURLE_NO_CONNECTION_AVAILABLE == result) {
        /* There was no connection available. We will go to the pending
           state and wait for an available connection. */
        multistate(data, MSTATE_PENDING);

        /* add this handle to the list of connect-pending handles */
        Curl_llist_insert_next(&multi->pending, multi->pending.tail, data,
                               &data->connect_queue);
        result = CURLE_OK;
        break;
      }
      else if(data->state.previouslypending) {
        /* this transfer comes from the pending queue so try move another */
        infof(data, "Transfer was pending, now try another\n");
        process_pending_handles(data->multi);
      }

      if(!result) {
        if(async)
          /* We're now waiting for an asynchronous name lookup */
          multistate(data, MSTATE_RESOLVING);
        else {
          /* after the connect has been sent off, go WAITCONNECT unless the
             protocol connect is already done and we can go directly to
             WAITDO or DO! */
          rc = CURLM_CALL_MULTI_PERFORM;

          if(protocol_connected)
            multistate(data, MSTATE_DO);
          else {
#ifndef CURL_DISABLE_HTTP
            if(Curl_connect_ongoing(data->conn))
              multistate(data, MSTATE_TUNNELING);
            else
#endif
              multistate(data, MSTATE_CONNECTING);
          }
        }
      }
      break;

    case MSTATE_RESOLVING:
      /* awaiting an asynch name resolve to complete */
    {
      struct Curl_dns_entry *dns = NULL;
      struct connectdata *conn = data->conn;
      const char *hostname;

      DEBUGASSERT(conn);
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
          /* if Curl_once_resolved() returns failure, the connection struct
             is already freed and gone */
          data->conn = NULL; /* no more connection */
        else {
          /* call again please so that we get the next socket setup */
          rc = CURLM_CALL_MULTI_PERFORM;
          if(protocol_connected)
            multistate(data, CURLM_STATE_DO);
          else {
#ifndef CURL_DISABLE_HTTP
            if(Curl_connect_ongoing(data->conn))
              multistate(data, CURLM_STATE_WAITPROXYCONNECT);
            else
#endif
              multistate(data, CURLM_STATE_WAITCONNECT);
          }
        }
      }

      if(result) {
        /* failure detected */
        stream_error = TRUE;
        break;
      }
    }
    break;

#ifndef CURL_DISABLE_HTTP
    case CURLM_STATE_WAITPROXYCONNECT:
      /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */
      DEBUGASSERT(data->conn);
      result = Curl_http_connect(data, &protocol_connected);
#ifndef CURL_DISABLE_PROXY
      if(data->conn->bits.proxy_connect_closed) {
        rc = CURLM_CALL_MULTI_PERFORM;
        /* connect back to proxy again */
        result = CURLE_OK;
        multi_done(data, CURLE_OK, FALSE);
        multistate(data, CURLM_STATE_CONNECT);
      }
      else
#endif
        if(!result) {
          if(
#ifndef CURL_DISABLE_PROXY
            (data->conn->http_proxy.proxytype != CURLPROXY_HTTPS ||
             data->conn->bits.proxy_ssl_connected[FIRSTSOCKET]) &&
#endif
            Curl_connect_complete(data->conn)) {
            rc = CURLM_CALL_MULTI_PERFORM;
            /* initiate protocol connect phase */
            multistate(data, CURLM_STATE_SENDPROTOCONNECT);
          }
        }
      else
        stream_error = TRUE;
      break;
#endif

    case CURLM_STATE_WAITCONNECT:
      /* awaiting a completion of an asynch TCP connect */
      DEBUGASSERT(data->conn);
      result = Curl_is_connected(data, data->conn, FIRSTSOCKET, &connected);
      if(connected && !result) {
#ifndef CURL_DISABLE_HTTP
        if(
#ifndef CURL_DISABLE_PROXY
          (data->conn->http_proxy.proxytype == CURLPROXY_HTTPS &&
           !data->conn->bits.proxy_ssl_connected[FIRSTSOCKET]) ||
#endif
          Curl_connect_ongoing(data->conn)) {
          multistate(data, CURLM_STATE_WAITPROXYCONNECT);
          break;
        }
#endif
        rc = CURLM_CALL_MULTI_PERFORM;
#ifndef CURL_DISABLE_PROXY
        multistate(data,
                   data->conn->bits.tunnel_proxy?
                   CURLM_STATE_WAITPROXYCONNECT:
                   CURLM_STATE_SENDPROTOCONNECT);
#else
        multistate(data, CURLM_STATE_SENDPROTOCONNECT);
#endif
      }
      else if(result) {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
        stream_error = TRUE;
        break;
      }
      break;

    case CURLM_STATE_SENDPROTOCONNECT:
      result = protocol_connect(data, &protocol_connected);
      if(!result && !protocol_connected)
        /* switch to waiting state */
        multistate(data, CURLM_STATE_PROTOCONNECT);
      else if(!result) {
        /* protocol connect has completed, go WAITDO or DO */
        multistate(data, CURLM_STATE_DO);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      else {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
        stream_error = TRUE;
      }
      break;

    case CURLM_STATE_PROTOCONNECT:
      /* protocol-specific connect phase */
      result = protocol_connecting(data, &protocol_connected);
      if(!result && protocol_connected) {
        /* after the connect has completed, go WAITDO or DO */
        multistate(data, CURLM_STATE_DO);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      else if(result) {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
        stream_error = TRUE;
      }
      break;

    case CURLM_STATE_DO:
      if(data->set.connect_only) {
        /* keep connection open for application to use the socket */
        connkeep(data->conn, "CONNECT_ONLY");
        multistate(data, CURLM_STATE_DONE);
        result = CURLE_OK;
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      else {
        /* Perform the protocol's DO action */
        result = multi_do(data, &dophase_done);








|



|


|













|









|












|







|











|







<
|

|











|



|


|










|




|










|



|







1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826

1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
          /* if Curl_once_resolved() returns failure, the connection struct
             is already freed and gone */
          data->conn = NULL; /* no more connection */
        else {
          /* call again please so that we get the next socket setup */
          rc = CURLM_CALL_MULTI_PERFORM;
          if(protocol_connected)
            multistate(data, MSTATE_DO);
          else {
#ifndef CURL_DISABLE_HTTP
            if(Curl_connect_ongoing(data->conn))
              multistate(data, MSTATE_TUNNELING);
            else
#endif
              multistate(data, MSTATE_CONNECTING);
          }
        }
      }

      if(result) {
        /* failure detected */
        stream_error = TRUE;
        break;
      }
    }
    break;

#ifndef CURL_DISABLE_HTTP
    case MSTATE_TUNNELING:
      /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */
      DEBUGASSERT(data->conn);
      result = Curl_http_connect(data, &protocol_connected);
#ifndef CURL_DISABLE_PROXY
      if(data->conn->bits.proxy_connect_closed) {
        rc = CURLM_CALL_MULTI_PERFORM;
        /* connect back to proxy again */
        result = CURLE_OK;
        multi_done(data, CURLE_OK, FALSE);
        multistate(data, MSTATE_CONNECT);
      }
      else
#endif
        if(!result) {
          if(
#ifndef CURL_DISABLE_PROXY
            (data->conn->http_proxy.proxytype != CURLPROXY_HTTPS ||
             data->conn->bits.proxy_ssl_connected[FIRSTSOCKET]) &&
#endif
            Curl_connect_complete(data->conn)) {
            rc = CURLM_CALL_MULTI_PERFORM;
            /* initiate protocol connect phase */
            multistate(data, MSTATE_PROTOCONNECT);
          }
        }
      else
        stream_error = TRUE;
      break;
#endif

    case MSTATE_CONNECTING:
      /* awaiting a completion of an asynch TCP connect */
      DEBUGASSERT(data->conn);
      result = Curl_is_connected(data, data->conn, FIRSTSOCKET, &connected);
      if(connected && !result) {
#ifndef CURL_DISABLE_HTTP
        if(
#ifndef CURL_DISABLE_PROXY
          (data->conn->http_proxy.proxytype == CURLPROXY_HTTPS &&
           !data->conn->bits.proxy_ssl_connected[FIRSTSOCKET]) ||
#endif
          Curl_connect_ongoing(data->conn)) {
          multistate(data, MSTATE_TUNNELING);
          break;
        }
#endif
        rc = CURLM_CALL_MULTI_PERFORM;
#ifndef CURL_DISABLE_PROXY
        multistate(data,
                   data->conn->bits.tunnel_proxy?

                   MSTATE_TUNNELING : MSTATE_PROTOCONNECT);
#else
        multistate(data, MSTATE_PROTOCONNECT);
#endif
      }
      else if(result) {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
        stream_error = TRUE;
        break;
      }
      break;

    case MSTATE_PROTOCONNECT:
      result = protocol_connect(data, &protocol_connected);
      if(!result && !protocol_connected)
        /* switch to waiting state */
        multistate(data, MSTATE_PROTOCONNECTING);
      else if(!result) {
        /* protocol connect has completed, go WAITDO or DO */
        multistate(data, MSTATE_DO);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      else {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
        stream_error = TRUE;
      }
      break;

    case MSTATE_PROTOCONNECTING:
      /* protocol-specific connect phase */
      result = protocol_connecting(data, &protocol_connected);
      if(!result && protocol_connected) {
        /* after the connect has completed, go WAITDO or DO */
        multistate(data, MSTATE_DO);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      else if(result) {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
        stream_error = TRUE;
      }
      break;

    case MSTATE_DO:
      if(data->set.connect_only) {
        /* keep connection open for application to use the socket */
        connkeep(data->conn, "CONNECT_ONLY");
        multistate(data, MSTATE_DONE);
        result = CURLE_OK;
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      else {
        /* Perform the protocol's DO action */
        result = multi_do(data, &dophase_done);

1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
              struct WildcardData *wc = &data->wildcard;
              if(wc->state == CURLWC_DONE || wc->state == CURLWC_SKIP) {
                /* skip some states if it is important */
                multi_done(data, CURLE_OK, FALSE);

                /* if there's no connection left, skip the DONE state */
                multistate(data, data->conn ?
                           CURLM_STATE_DONE : CURLM_STATE_COMPLETED);
                rc = CURLM_CALL_MULTI_PERFORM;
                break;
              }
            }
#endif
            /* DO was not completed in one function call, we must continue
               DOING... */
            multistate(data, CURLM_STATE_DOING);
            rc = CURLM_OK;
          }

          /* after DO, go DO_DONE... or DO_MORE */
          else if(data->conn->bits.do_more) {
            /* we're supposed to do more, but we need to sit down, relax
               and wait a little while first */
            multistate(data, CURLM_STATE_DO_MORE);
            rc = CURLM_OK;
          }
          else {
            /* we're done with the DO, now DO_DONE */
            multistate(data, CURLM_STATE_DO_DONE);
            rc = CURLM_CALL_MULTI_PERFORM;
          }
        }
        else if((CURLE_SEND_ERROR == result) &&
                data->conn->bits.reuse) {
          /*
           * In this situation, a connection that we were trying to use







|







|







|



|
|







1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
              struct WildcardData *wc = &data->wildcard;
              if(wc->state == CURLWC_DONE || wc->state == CURLWC_SKIP) {
                /* skip some states if it is important */
                multi_done(data, CURLE_OK, FALSE);

                /* if there's no connection left, skip the DONE state */
                multistate(data, data->conn ?
                           MSTATE_DONE : MSTATE_COMPLETED);
                rc = CURLM_CALL_MULTI_PERFORM;
                break;
              }
            }
#endif
            /* DO was not completed in one function call, we must continue
               DOING... */
            multistate(data, MSTATE_DOING);
            rc = CURLM_OK;
          }

          /* after DO, go DO_DONE... or DO_MORE */
          else if(data->conn->bits.do_more) {
            /* we're supposed to do more, but we need to sit down, relax
               and wait a little while first */
            multistate(data, MSTATE_DOING_MORE);
            rc = CURLM_OK;
          }
          else {
            /* we're done with the DO, now DID */
            multistate(data, MSTATE_DID);
            rc = CURLM_CALL_MULTI_PERFORM;
          }
        }
        else if((CURLE_SEND_ERROR == result) &&
                data->conn->bits.reuse) {
          /*
           * In this situation, a connection that we were trying to use
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
          /* When set to retry the connection, we must to go back to
           * the CONNECT state */
          if(newurl) {
            if(!drc || (drc == CURLE_SEND_ERROR)) {
              follow = FOLLOW_RETRY;
              drc = Curl_follow(data, newurl, follow);
              if(!drc) {
                multistate(data, CURLM_STATE_CONNECT);
                rc = CURLM_CALL_MULTI_PERFORM;
                result = CURLE_OK;
              }
              else {
                /* Follow failed */
                result = drc;
              }







|







1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
          /* When set to retry the connection, we must to go back to
           * the CONNECT state */
          if(newurl) {
            if(!drc || (drc == CURLE_SEND_ERROR)) {
              follow = FOLLOW_RETRY;
              drc = Curl_follow(data, newurl, follow);
              if(!drc) {
                multistate(data, MSTATE_CONNECT);
                rc = CURLM_CALL_MULTI_PERFORM;
                result = CURLE_OK;
              }
              else {
                /* Follow failed */
                result = drc;
              }
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
          if(data->conn)
            multi_done(data, result, FALSE);
          stream_error = TRUE;
        }
      }
      break;

    case CURLM_STATE_DOING:
      /* we continue DOING until the DO phase is complete */
      DEBUGASSERT(data->conn);
      result = protocol_doing(data, &dophase_done);
      if(!result) {
        if(dophase_done) {
          /* after DO, go DO_DONE or DO_MORE */
          multistate(data, data->conn->bits.do_more?
                     CURLM_STATE_DO_MORE:
                     CURLM_STATE_DO_DONE);
          rc = CURLM_CALL_MULTI_PERFORM;
        } /* dophase_done */
      }
      else {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, FALSE);
        stream_error = TRUE;
      }
      break;

    case CURLM_STATE_DO_MORE:
      /*
       * When we are connected, DO MORE and then go DO_DONE
       */
      DEBUGASSERT(data->conn);
      result = multi_do_more(data, &control);

      if(!result) {
        if(control) {
          /* if positive, advance to DO_DONE
             if negative, go back to DOING */
          multistate(data, control == 1?
                     CURLM_STATE_DO_DONE:
                     CURLM_STATE_DOING);
          rc = CURLM_CALL_MULTI_PERFORM;
        }
        else
          /* stay in DO_MORE */
          rc = CURLM_OK;
      }
      else {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, FALSE);
        stream_error = TRUE;
      }
      break;

    case CURLM_STATE_DO_DONE:
      DEBUGASSERT(data->conn);
      if(data->conn->bits.multiplex)
        /* Check if we can move pending requests to send pipe */
        process_pending_handles(multi); /*  multiplexed */

      /* Only perform the transfer if there's a good socket to work with.
         Having both BAD is a signal to skip immediately to DONE */
      if((data->conn->sockfd != CURL_SOCKET_BAD) ||
         (data->conn->writesockfd != CURL_SOCKET_BAD))
        multistate(data, CURLM_STATE_PERFORM);
      else {
#ifndef CURL_DISABLE_FTP
        if(data->state.wildcardmatch &&
           ((data->conn->handler->flags & PROTOPT_WILDCARD) == 0)) {
          data->wildcard.state = CURLWC_DONE;
        }
#endif
        multistate(data, CURLM_STATE_DONE);
      }
      rc = CURLM_CALL_MULTI_PERFORM;
      break;

    case CURLM_STATE_TOOFAST: /* limit-rate exceeded in either direction */
      DEBUGASSERT(data->conn);
      /* if both rates are within spec, resume transfer */
      if(Curl_pgrsUpdate(data))
        result = CURLE_ABORTED_BY_CALLBACK;
      else
        result = Curl_speedcheck(data, *nowp);

      if(result) {
        if(!(data->conn->handler->flags & PROTOPT_DUAL) &&
           result != CURLE_HTTP2_STREAM)
          streamclose(data->conn, "Transfer returned error");

        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
      }
      else {
        send_timeout_ms = 0;
        if(data->set.max_send_speed > 0)
          send_timeout_ms =
            Curl_pgrsLimitWaitTime(data->progress.uploaded,
                                   data->progress.ul_limit_size,
                                   data->set.max_send_speed,
                                   data->progress.ul_limit_start,
                                   *nowp);

        recv_timeout_ms = 0;
        if(data->set.max_recv_speed > 0)
          recv_timeout_ms =
            Curl_pgrsLimitWaitTime(data->progress.downloaded,
                                   data->progress.dl_limit_size,
                                   data->set.max_recv_speed,
                                   data->progress.dl_limit_start,
                                   *nowp);

        if(!send_timeout_ms && !recv_timeout_ms) {
          multistate(data, CURLM_STATE_PERFORM);
          Curl_ratelimit(data, *nowp);
        }
        else if(send_timeout_ms >= recv_timeout_ms)
          Curl_expire(data, send_timeout_ms, EXPIRE_TOOFAST);
        else
          Curl_expire(data, recv_timeout_ms, EXPIRE_TOOFAST);
      }
      break;

    case CURLM_STATE_PERFORM:
    {
      char *newurl = NULL;
      bool retry = FALSE;
      bool comeback = FALSE;
      DEBUGASSERT(data->state.buffer);
      /* check if over send speed */
      send_timeout_ms = 0;
      if(data->set.max_send_speed > 0)
        send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded,
                                                 data->progress.ul_limit_size,
                                                 data->set.max_send_speed,
                                                 data->progress.ul_limit_start,
                                                 *nowp);

      /* check if over recv speed */
      recv_timeout_ms = 0;
      if(data->set.max_recv_speed > 0)
        recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded,
                                                 data->progress.dl_limit_size,
                                                 data->set.max_recv_speed,
                                                 data->progress.dl_limit_start,
                                                 *nowp);

      if(send_timeout_ms || recv_timeout_ms) {
        Curl_ratelimit(data, *nowp);
        multistate(data, CURLM_STATE_TOOFAST);
        if(send_timeout_ms >= recv_timeout_ms)
          Curl_expire(data, send_timeout_ms, EXPIRE_TOOFAST);
        else
          Curl_expire(data, recv_timeout_ms, EXPIRE_TOOFAST);
        break;
      }








|







|
<











|

|









<
|














|









|







|




|

















|








|








|









|







|








|








|







1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992

1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015

2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
          if(data->conn)
            multi_done(data, result, FALSE);
          stream_error = TRUE;
        }
      }
      break;

    case MSTATE_DOING:
      /* we continue DOING until the DO phase is complete */
      DEBUGASSERT(data->conn);
      result = protocol_doing(data, &dophase_done);
      if(!result) {
        if(dophase_done) {
          /* after DO, go DO_DONE or DO_MORE */
          multistate(data, data->conn->bits.do_more?
                     MSTATE_DOING_MORE : MSTATE_DID);

          rc = CURLM_CALL_MULTI_PERFORM;
        } /* dophase_done */
      }
      else {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, FALSE);
        stream_error = TRUE;
      }
      break;

    case MSTATE_DOING_MORE:
      /*
       * When we are connected, DOING MORE and then go DID
       */
      DEBUGASSERT(data->conn);
      result = multi_do_more(data, &control);

      if(!result) {
        if(control) {
          /* if positive, advance to DO_DONE
             if negative, go back to DOING */
          multistate(data, control == 1?

                     MSTATE_DID : MSTATE_DOING);
          rc = CURLM_CALL_MULTI_PERFORM;
        }
        else
          /* stay in DO_MORE */
          rc = CURLM_OK;
      }
      else {
        /* failure detected */
        Curl_posttransfer(data);
        multi_done(data, result, FALSE);
        stream_error = TRUE;
      }
      break;

    case MSTATE_DID:
      DEBUGASSERT(data->conn);
      if(data->conn->bits.multiplex)
        /* Check if we can move pending requests to send pipe */
        process_pending_handles(multi); /*  multiplexed */

      /* Only perform the transfer if there's a good socket to work with.
         Having both BAD is a signal to skip immediately to DONE */
      if((data->conn->sockfd != CURL_SOCKET_BAD) ||
         (data->conn->writesockfd != CURL_SOCKET_BAD))
        multistate(data, MSTATE_PERFORMING);
      else {
#ifndef CURL_DISABLE_FTP
        if(data->state.wildcardmatch &&
           ((data->conn->handler->flags & PROTOPT_WILDCARD) == 0)) {
          data->wildcard.state = CURLWC_DONE;
        }
#endif
        multistate(data, MSTATE_DONE);
      }
      rc = CURLM_CALL_MULTI_PERFORM;
      break;

    case MSTATE_RATELIMITING: /* limit-rate exceeded in either direction */
      DEBUGASSERT(data->conn);
      /* if both rates are within spec, resume transfer */
      if(Curl_pgrsUpdate(data))
        result = CURLE_ABORTED_BY_CALLBACK;
      else
        result = Curl_speedcheck(data, *nowp);

      if(result) {
        if(!(data->conn->handler->flags & PROTOPT_DUAL) &&
           result != CURLE_HTTP2_STREAM)
          streamclose(data->conn, "Transfer returned error");

        Curl_posttransfer(data);
        multi_done(data, result, TRUE);
      }
      else {
        send_timeout_ms = 0;
        if(data->set.max_send_speed)
          send_timeout_ms =
            Curl_pgrsLimitWaitTime(data->progress.uploaded,
                                   data->progress.ul_limit_size,
                                   data->set.max_send_speed,
                                   data->progress.ul_limit_start,
                                   *nowp);

        recv_timeout_ms = 0;
        if(data->set.max_recv_speed)
          recv_timeout_ms =
            Curl_pgrsLimitWaitTime(data->progress.downloaded,
                                   data->progress.dl_limit_size,
                                   data->set.max_recv_speed,
                                   data->progress.dl_limit_start,
                                   *nowp);

        if(!send_timeout_ms && !recv_timeout_ms) {
          multistate(data, MSTATE_PERFORMING);
          Curl_ratelimit(data, *nowp);
        }
        else if(send_timeout_ms >= recv_timeout_ms)
          Curl_expire(data, send_timeout_ms, EXPIRE_TOOFAST);
        else
          Curl_expire(data, recv_timeout_ms, EXPIRE_TOOFAST);
      }
      break;

    case MSTATE_PERFORMING:
    {
      char *newurl = NULL;
      bool retry = FALSE;
      bool comeback = FALSE;
      DEBUGASSERT(data->state.buffer);
      /* check if over send speed */
      send_timeout_ms = 0;
      if(data->set.max_send_speed)
        send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded,
                                                 data->progress.ul_limit_size,
                                                 data->set.max_send_speed,
                                                 data->progress.ul_limit_start,
                                                 *nowp);

      /* check if over recv speed */
      recv_timeout_ms = 0;
      if(data->set.max_recv_speed)
        recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded,
                                                 data->progress.dl_limit_size,
                                                 data->set.max_recv_speed,
                                                 data->progress.dl_limit_start,
                                                 *nowp);

      if(send_timeout_ms || recv_timeout_ms) {
        Curl_ratelimit(data, *nowp);
        multistate(data, MSTATE_RATELIMITING);
        if(send_timeout_ms >= recv_timeout_ms)
          Curl_expire(data, send_timeout_ms, EXPIRE_TOOFAST);
        else
          Curl_expire(data, recv_timeout_ms, EXPIRE_TOOFAST);
        break;
      }

2169
2170
2171
2172
2173
2174
2175

2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
      }
      else if((CURLE_HTTP2_STREAM == result) &&
              Curl_h2_http_1_1_error(data->conn)) {
        CURLcode ret = Curl_retry_request(data, &newurl);

        if(!ret) {
          infof(data, "Downgrades to HTTP/1.1!\n");

          data->set.httpversion = CURL_HTTP_VERSION_1_1;
          /* clear the error message bit too as we ignore the one we got */
          data->state.errorbuf = FALSE;
          if(!newurl)
            /* typically for HTTP_1_1_REQUIRED error on first flight */
            newurl = strdup(data->change.url);
          /* if we are to retry, set the result to OK and consider the request
             as done */
          retry = TRUE;
          result = CURLE_OK;
          done = TRUE;
        }
        else







>
|




|







2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
      }
      else if((CURLE_HTTP2_STREAM == result) &&
              Curl_h2_http_1_1_error(data->conn)) {
        CURLcode ret = Curl_retry_request(data, &newurl);

        if(!ret) {
          infof(data, "Downgrades to HTTP/1.1!\n");
          connclose(data->conn, "Disconnect HTTP/2 for HTTP/1");
          data->state.httpwant = CURL_HTTP_VERSION_1_1;
          /* clear the error message bit too as we ignore the one we got */
          data->state.errorbuf = FALSE;
          if(!newurl)
            /* typically for HTTP_1_1_REQUIRED error on first flight */
            newurl = strdup(data->state.url);
          /* if we are to retry, set the result to OK and consider the request
             as done */
          retry = TRUE;
          result = CURLE_OK;
          done = TRUE;
        }
        else
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
          }
          else
            follow = FOLLOW_RETRY;
          (void)multi_done(data, CURLE_OK, FALSE);
          /* multi_done() might return CURLE_GOT_NOTHING */
          result = Curl_follow(data, newurl, follow);
          if(!result) {
            multistate(data, CURLM_STATE_CONNECT);
            rc = CURLM_CALL_MULTI_PERFORM;
          }
          free(newurl);
        }
        else {
          /* after the transfer is done, go DONE */








|







2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
          }
          else
            follow = FOLLOW_RETRY;
          (void)multi_done(data, CURLE_OK, FALSE);
          /* multi_done() might return CURLE_GOT_NOTHING */
          result = Curl_follow(data, newurl, follow);
          if(!result) {
            multistate(data, MSTATE_CONNECT);
            rc = CURLM_CALL_MULTI_PERFORM;
          }
          free(newurl);
        }
        else {
          /* after the transfer is done, go DONE */

2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
            if(result) {
              stream_error = TRUE;
              result = multi_done(data, result, TRUE);
            }
          }

          if(!result) {
            multistate(data, CURLM_STATE_DONE);
            rc = CURLM_CALL_MULTI_PERFORM;
          }
        }
      }
      else if(comeback) {
        /* This avoids CURLM_CALL_MULTI_PERFORM so that a very fast transfer
           won't get stuck on this transfer at the expense of other concurrent
           transfers */
        Curl_expire(data, 0, EXPIRE_RUN_NOW);
        rc = CURLM_OK;
      }
      break;
    }

    case CURLM_STATE_DONE:
      /* this state is highly transient, so run another loop after this */
      rc = CURLM_CALL_MULTI_PERFORM;

      if(data->conn) {
        CURLcode res;

        if(data->conn->bits.multiplex)







|














|







2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
            if(result) {
              stream_error = TRUE;
              result = multi_done(data, result, TRUE);
            }
          }

          if(!result) {
            multistate(data, MSTATE_DONE);
            rc = CURLM_CALL_MULTI_PERFORM;
          }
        }
      }
      else if(comeback) {
        /* This avoids CURLM_CALL_MULTI_PERFORM so that a very fast transfer
           won't get stuck on this transfer at the expense of other concurrent
           transfers */
        Curl_expire(data, 0, EXPIRE_RUN_NOW);
        rc = CURLM_OK;
      }
      break;
    }

    case MSTATE_DONE:
      /* this state is highly transient, so run another loop after this */
      rc = CURLM_CALL_MULTI_PERFORM;

      if(data->conn) {
        CURLcode res;

        if(data->conn->bits.multiplex)
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
          result = res;
      }

#ifndef CURL_DISABLE_FTP
      if(data->state.wildcardmatch) {
        if(data->wildcard.state != CURLWC_DONE) {
          /* if a wildcard is set and we are not ending -> lets start again
             with CURLM_STATE_INIT */
          multistate(data, CURLM_STATE_INIT);
          break;
        }
      }
#endif
      /* after we have DONE what we're supposed to do, go COMPLETED, and
         it doesn't matter what the multi_done() returned! */
      multistate(data, CURLM_STATE_COMPLETED);
      break;

    case CURLM_STATE_COMPLETED:
      break;

    case CURLM_STATE_MSGSENT:
      data->result = result;
      return CURLM_OK; /* do nothing */

    default:
      return CURLM_INTERNAL_ERROR;
    }
    statemachine_end:

    if(data->mstate < CURLM_STATE_COMPLETED) {
      if(result) {
        /*
         * If an error was returned, and we aren't in completed state now,
         * then we go to completed and consider this transfer aborted.
         */

        /* NOTE: no attempt to disconnect connections must be made







|
|






|


|


|








|







2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
          result = res;
      }

#ifndef CURL_DISABLE_FTP
      if(data->state.wildcardmatch) {
        if(data->wildcard.state != CURLWC_DONE) {
          /* if a wildcard is set and we are not ending -> lets start again
             with MSTATE_INIT */
          multistate(data, MSTATE_INIT);
          break;
        }
      }
#endif
      /* after we have DONE what we're supposed to do, go COMPLETED, and
         it doesn't matter what the multi_done() returned! */
      multistate(data, MSTATE_COMPLETED);
      break;

    case MSTATE_COMPLETED:
      break;

    case MSTATE_MSGSENT:
      data->result = result;
      return CURLM_OK; /* do nothing */

    default:
      return CURLM_INTERNAL_ERROR;
    }
    statemachine_end:

    if(data->mstate < MSTATE_COMPLETED) {
      if(result) {
        /*
         * If an error was returned, and we aren't in completed state now,
         * then we go to completed and consider this transfer aborted.
         */

        /* NOTE: no attempt to disconnect connections must be made
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
            /* remove connection from cache */
            Curl_conncache_remove_conn(data, conn, TRUE);

            /* disconnect properly */
            Curl_disconnect(data, conn, dead_connection);
          }
        }
        else if(data->mstate == CURLM_STATE_CONNECT) {
          /* Curl_connect() failed */
          (void)Curl_posttransfer(data);
        }

        multistate(data, CURLM_STATE_COMPLETED);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      /* if there's still a connection to use, call the progress function */
      else if(data->conn && Curl_pgrsUpdate(data)) {
        /* aborted due to progress callback return code must close the
           connection */
        result = CURLE_ABORTED_BY_CALLBACK;
        streamclose(data->conn, "Aborted by callback");

        /* if not yet in DONE state, go there, otherwise COMPLETED */
        multistate(data, (data->mstate < CURLM_STATE_DONE)?
                   CURLM_STATE_DONE: CURLM_STATE_COMPLETED);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
    }

    if(CURLM_STATE_COMPLETED == data->mstate) {
      if(data->set.fmultidone) {
        /* signal via callback instead */
        data->set.fmultidone(data, result);
      }
      else {
        /* now fill in the Curl_message with this info */
        msg = &data->msg;

        msg->extmsg.msg = CURLMSG_DONE;
        msg->extmsg.easy_handle = data;
        msg->extmsg.data.result = result;

        rc = multi_addmsg(multi, msg);
        DEBUGASSERT(!data->conn);
      }
      multistate(data, CURLM_STATE_MSGSENT);
    }
  } while((rc == CURLM_CALL_MULTI_PERFORM) || multi_ischanged(multi, FALSE));

  data->result = result;
  return rc;
}








|




|










|
|




|















|







2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
            /* remove connection from cache */
            Curl_conncache_remove_conn(data, conn, TRUE);

            /* disconnect properly */
            Curl_disconnect(data, conn, dead_connection);
          }
        }
        else if(data->mstate == MSTATE_CONNECT) {
          /* Curl_connect() failed */
          (void)Curl_posttransfer(data);
        }

        multistate(data, MSTATE_COMPLETED);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
      /* if there's still a connection to use, call the progress function */
      else if(data->conn && Curl_pgrsUpdate(data)) {
        /* aborted due to progress callback return code must close the
           connection */
        result = CURLE_ABORTED_BY_CALLBACK;
        streamclose(data->conn, "Aborted by callback");

        /* if not yet in DONE state, go there, otherwise COMPLETED */
        multistate(data, (data->mstate < MSTATE_DONE)?
                   MSTATE_DONE: MSTATE_COMPLETED);
        rc = CURLM_CALL_MULTI_PERFORM;
      }
    }

    if(MSTATE_COMPLETED == data->mstate) {
      if(data->set.fmultidone) {
        /* signal via callback instead */
        data->set.fmultidone(data, result);
      }
      else {
        /* now fill in the Curl_message with this info */
        msg = &data->msg;

        msg->extmsg.msg = CURLMSG_DONE;
        msg->extmsg.easy_handle = data;
        msg->extmsg.data.result = result;

        rc = multi_addmsg(multi, msg);
        DEBUGASSERT(!data->conn);
      }
      multistate(data, MSTATE_MSGSENT);
    }
  } while((rc == CURLM_CALL_MULTI_PERFORM) || multi_ischanged(multi, FALSE));

  data->result = result;
  return rc;
}

2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
{
  curl_socket_t socks[MAX_SOCKSPEREASYHANDLE];
  int i;
  struct Curl_sh_entry *entry;
  curl_socket_t s;
  int num;
  unsigned int curraction;
  int actions[MAX_SOCKSPEREASYHANDLE];

  for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++)
    socks[i] = CURL_SOCKET_BAD;

  /* Fill in the 'current' struct with the state as it is now: what sockets to
     supervise and for what actions */
  curraction = multi_getsock(data, socks);

  /* We have 0 .. N sockets already and we get to know about the 0 .. M
     sockets we should have from now on. Detect the differences, remove no
     longer supervised ones and add new ones */

  /* walk over the sockets we got right now */
  for(i = 0; (i< MAX_SOCKSPEREASYHANDLE) &&
        (curraction & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i)));
      i++) {
    unsigned int action = CURL_POLL_NONE;
    unsigned int prevaction = 0;
    unsigned int comboaction;
    bool sincebefore = FALSE;

    s = socks[i];

    /* get it from the hash */
    entry = sh_getentry(&multi->sockhash, s);








|
















|
|
|







2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
{
  curl_socket_t socks[MAX_SOCKSPEREASYHANDLE];
  int i;
  struct Curl_sh_entry *entry;
  curl_socket_t s;
  int num;
  unsigned int curraction;
  unsigned char actions[MAX_SOCKSPEREASYHANDLE];

  for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++)
    socks[i] = CURL_SOCKET_BAD;

  /* Fill in the 'current' struct with the state as it is now: what sockets to
     supervise and for what actions */
  curraction = multi_getsock(data, socks);

  /* We have 0 .. N sockets already and we get to know about the 0 .. M
     sockets we should have from now on. Detect the differences, remove no
     longer supervised ones and add new ones */

  /* walk over the sockets we got right now */
  for(i = 0; (i< MAX_SOCKSPEREASYHANDLE) &&
        (curraction & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i)));
      i++) {
    unsigned char action = CURL_POLL_NONE;
    unsigned char prevaction = 0;
    int comboaction;
    bool sincebefore = FALSE;

    s = socks[i];

    /* get it from the hash */
    entry = sh_getentry(&multi->sockhash, s);

2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
      /* add 'data' to the transfer hash on this socket! */
      if(!Curl_hash_add(&entry->transfers, (char *)&data, /* hash key */
                        sizeof(struct Curl_easy *), data))
        return CURLM_OUT_OF_MEMORY;
    }

    comboaction = (entry->writers? CURL_POLL_OUT : 0) |
      (entry->readers ? CURL_POLL_IN : 0);

    /* socket existed before and has the same action set as before */
    if(sincebefore && (entry->action == comboaction))
      /* same, continue */
      continue;

    if(multi->socket_cb)
      multi->socket_cb(data, s, comboaction, multi->socket_userp,
                       entry->socketp);








|


|







2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
      /* add 'data' to the transfer hash on this socket! */
      if(!Curl_hash_add(&entry->transfers, (char *)&data, /* hash key */
                        sizeof(struct Curl_easy *), data))
        return CURLM_OUT_OF_MEMORY;
    }

    comboaction = (entry->writers? CURL_POLL_OUT : 0) |
                   (entry->readers ? CURL_POLL_IN : 0);

    /* socket existed before and has the same action set as before */
    if(sincebefore && ((int)entry->action == comboaction))
      /* same, continue */
      continue;

    if(multi->socket_cb)
      multi->socket_cb(data, s, comboaction, multi->socket_userp,
                       entry->socketp);

2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
    if(stillused)
      continue;

    entry = sh_getentry(&multi->sockhash, s);
    /* if this is NULL here, the socket has been closed and notified so
       already by Curl_multi_closed() */
    if(entry) {
      int oldactions = data->actions[i];
      /* this socket has been removed. Decrease user count */
      entry->users--;
      if(oldactions & CURL_POLL_OUT)
        entry->writers--;
      if(oldactions & CURL_POLL_IN)
        entry->readers--;
      if(!entry->users) {







|







2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
    if(stillused)
      continue;

    entry = sh_getentry(&multi->sockhash, s);
    /* if this is NULL here, the socket has been closed and notified so
       already by Curl_multi_closed() */
    if(entry) {
      unsigned char oldactions = data->actions[i];
      /* this socket has been removed. Decrease user count */
      entry->users--;
      if(oldactions & CURL_POLL_OUT)
        entry->writers--;
      if(oldactions & CURL_POLL_IN)
        entry->readers--;
      if(!entry->users) {
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
          DEBUGASSERT(NULL);
        }
      }
    }
  } /* for loop over numsocks */

  memcpy(data->sockets, socks, num*sizeof(curl_socket_t));
  memcpy(data->actions, actions, num*sizeof(int));
  data->numsocks = num;
  return CURLM_OK;
}

void Curl_updatesocket(struct Curl_easy *data)
{
  singlesocket(data->multi, data);







|







2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
          DEBUGASSERT(NULL);
        }
      }
    }
  } /* for loop over numsocks */

  memcpy(data->sockets, socks, num*sizeof(curl_socket_t));
  memcpy(data->actions, actions, num*sizeof(char));
  data->numsocks = num;
  return CURLM_OK;
}

void Curl_updatesocket(struct Curl_easy *data)
{
  singlesocket(data->multi, data);
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356

static void process_pending_handles(struct Curl_multi *multi)
{
  struct Curl_llist_element *e = multi->pending.head;
  if(e) {
    struct Curl_easy *data = e->ptr;

    DEBUGASSERT(data->mstate == CURLM_STATE_CONNECT_PEND);

    multistate(data, CURLM_STATE_CONNECT);

    /* Remove this node from the list */
    Curl_llist_remove(&multi->pending, e, NULL);

    /* Make sure that the handle will be processed soonish. */
    Curl_expire(data, 0, EXPIRE_RUN_NOW);








|

|







3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342

static void process_pending_handles(struct Curl_multi *multi)
{
  struct Curl_llist_element *e = multi->pending.head;
  if(e) {
    struct Curl_easy *data = e->ptr;

    DEBUGASSERT(data->mstate == MSTATE_PENDING);

    multistate(data, MSTATE_CONNECT);

    /* Remove this node from the list */
    Curl_llist_remove(&multi->pending, e, NULL);

    /* Make sure that the handle will be processed soonish. */
    Curl_expire(data, 0, EXPIRE_RUN_NOW);

3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
void Curl_multi_dump(struct Curl_multi *multi)
{
  struct Curl_easy *data;
  int i;
  fprintf(stderr, "* Multi status: %d handles, %d alive\n",
          multi->num_easy, multi->num_alive);
  for(data = multi->easyp; data; data = data->next) {
    if(data->mstate < CURLM_STATE_COMPLETED) {
      /* only display handles that are not completed */
      fprintf(stderr, "handle %p, state %s, %d sockets\n",
              (void *)data,
              statename[data->mstate], data->numsocks);
      for(i = 0; i < data->numsocks; i++) {
        curl_socket_t s = data->sockets[i];
        struct Curl_sh_entry *entry = sh_getentry(&multi->sockhash, s);







|







3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
void Curl_multi_dump(struct Curl_multi *multi)
{
  struct Curl_easy *data;
  int i;
  fprintf(stderr, "* Multi status: %d handles, %d alive\n",
          multi->num_easy, multi->num_alive);
  for(data = multi->easyp; data; data = data->next) {
    if(data->mstate < MSTATE_COMPLETED) {
      /* only display handles that are not completed */
      fprintf(stderr, "handle %p, state %s, %d sockets\n",
              (void *)data,
              statename[data->mstate], data->numsocks);
      for(i = 0; i < data->numsocks; i++) {
        curl_socket_t s = data->sockets[i];
        struct Curl_sh_entry *entry = sh_getentry(&multi->sockhash, s);
Changes to jni/curl/lib/multihandle.h.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  struct CURLMsg extmsg;
};

/* NOTE: if you add a state here, add the name to the statename[] array as
   well!
*/
typedef enum {
  CURLM_STATE_INIT,         /* 0 - start in this state */
  CURLM_STATE_CONNECT_PEND, /* 1 - no connections, waiting for one */
  CURLM_STATE_CONNECT,      /* 2 - resolve/connect has been sent off */
  CURLM_STATE_WAITRESOLVE,  /* 3 - awaiting the resolve to finalize */
  CURLM_STATE_WAITCONNECT,  /* 4 - awaiting the TCP connect to finalize */
  CURLM_STATE_WAITPROXYCONNECT, /* 5 - awaiting HTTPS proxy SSL initialization
                                   to complete and/or proxy CONNECT to
                                   finalize */
  CURLM_STATE_SENDPROTOCONNECT, /* 6 - initiate protocol connect procedure */
  CURLM_STATE_PROTOCONNECT, /* 7 - completing the protocol-specific connect
                                   phase */
  CURLM_STATE_DO,           /* 8 - start send off the request (part 1) */
  CURLM_STATE_DOING,        /* 9 - sending off the request (part 1) */
  CURLM_STATE_DO_MORE,      /* 10 - send off the request (part 2) */
  CURLM_STATE_DO_DONE,      /* 11 - done sending off request */
  CURLM_STATE_PERFORM,      /* 12 - transfer data */
  CURLM_STATE_TOOFAST,      /* 13 - wait because limit-rate exceeded */
  CURLM_STATE_DONE,         /* 14 - post data transfer operation */
  CURLM_STATE_COMPLETED,    /* 15 - operation complete */
  CURLM_STATE_MSGSENT,      /* 16 - the operation complete message is sent */
  CURLM_STATE_LAST          /* 17 - not a true state, never use this */
} CURLMstate;

/* we support N sockets per easy handle. Set the corresponding bit to what
   action we should wait for */
#define MAX_SOCKSPEREASYHANDLE 5
#define GETSOCK_READABLE (0x00ff)
#define GETSOCK_WRITABLE (0xff00)

#define CURLPIPE_ANY (CURLPIPE_MULTIPLEX)

#if defined(USE_SOCKETPAIR) && !defined(USE_BLOCKING_SOCKETS) &&        \
  !defined(CURL_DISABLE_SOCKETPAIR)
#define ENABLE_WAKEUP
#endif

/* value for MAXIMUM CONCURRENT STREAMS upper limit */
#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)

/* This is the struct known as CURLM on the outside */







|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|










<
|







36
37
38
39
40
41
42
43
44
45
46
47
48
49

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

73
74
75
76
77
78
79
80
  struct CURLMsg extmsg;
};

/* NOTE: if you add a state here, add the name to the statename[] array as
   well!
*/
typedef enum {
  MSTATE_INIT,         /* 0 - start in this state */
  MSTATE_PENDING,      /* 1 - no connections, waiting for one */
  MSTATE_CONNECT,      /* 2 - resolve/connect has been sent off */
  MSTATE_RESOLVING,    /* 3 - awaiting the resolve to finalize */
  MSTATE_CONNECTING,   /* 4 - awaiting the TCP connect to finalize */
  MSTATE_TUNNELING,    /* 5 - awaiting HTTPS proxy SSL initialization to
                          complete and/or proxy CONNECT to finalize */

  MSTATE_PROTOCONNECT, /* 6 - initiate protocol connect procedure */
  MSTATE_PROTOCONNECTING, /* 7 - completing the protocol-specific connect
                             phase */
  MSTATE_DO,           /* 8 - start send off the request (part 1) */
  MSTATE_DOING,        /* 9 - sending off the request (part 1) */
  MSTATE_DOING_MORE,   /* 10 - send off the request (part 2) */
  MSTATE_DID,          /* 11 - done sending off request */
  MSTATE_PERFORMING,   /* 12 - transfer data */
  MSTATE_RATELIMITING, /* 13 - wait because limit-rate exceeded */
  MSTATE_DONE,         /* 14 - post data transfer operation */
  MSTATE_COMPLETED,    /* 15 - operation complete */
  MSTATE_MSGSENT,      /* 16 - the operation complete message is sent */
  MSTATE_LAST          /* 17 - not a true state, never use this */
} CURLMstate;

/* we support N sockets per easy handle. Set the corresponding bit to what
   action we should wait for */
#define MAX_SOCKSPEREASYHANDLE 5
#define GETSOCK_READABLE (0x00ff)
#define GETSOCK_WRITABLE (0xff00)

#define CURLPIPE_ANY (CURLPIPE_MULTIPLEX)


#if !defined(CURL_DISABLE_SOCKETPAIR)
#define ENABLE_WAKEUP
#endif

/* value for MAXIMUM CONCURRENT STREAMS upper limit */
#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)

/* This is the struct known as CURLM on the outside */
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
  int num_easy; /* amount of entries in the linked list above. */
  int num_alive; /* amount of easy handles that are added but have not yet
                    reached COMPLETE state */

  struct Curl_llist msglist; /* a list of messages from completed transfers */

  struct Curl_llist pending; /* Curl_easys that are in the
                                CURLM_STATE_CONNECT_PEND state */

  /* callback function and user data pointer for the *socket() API */
  curl_socket_callback socket_cb;
  void *socket_userp;

  /* callback function and user data pointer for server push */
  curl_push_callback push_cb;







|







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  int num_easy; /* amount of entries in the linked list above. */
  int num_alive; /* amount of easy handles that are added but have not yet
                    reached COMPLETE state */

  struct Curl_llist msglist; /* a list of messages from completed transfers */

  struct Curl_llist pending; /* Curl_easys that are in the
                                MSTATE_PENDING state */

  /* callback function and user data pointer for the *socket() API */
  curl_socket_callback socket_cb;
  void *socket_userp;

  /* callback function and user data pointer for server push */
  curl_push_callback push_cb;
Changes to jni/curl/lib/nonblock.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 * curlx_nonblock() set the given socket to either blocking or non-blocking
 * mode based on the 'nonblock' boolean argument. This function is highly
 * portable.
 */
int curlx_nonblock(curl_socket_t sockfd,    /* operate on this */
                   int nonblock   /* TRUE or FALSE */)
{
#if defined(USE_BLOCKING_SOCKETS)
  (void)sockfd;
  (void)nonblock;
  return 0; /* returns success */

#elif defined(HAVE_FCNTL_O_NONBLOCK)

  /* most recent unix versions */
  int flags;
  flags = sfcntl(sockfd, F_GETFL, 0);
  if(nonblock)
    return sfcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
  return sfcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK));








<
<
<
<
<
|
<







43
44
45
46
47
48
49





50

51
52
53
54
55
56
57
 * curlx_nonblock() set the given socket to either blocking or non-blocking
 * mode based on the 'nonblock' boolean argument. This function is highly
 * portable.
 */
int curlx_nonblock(curl_socket_t sockfd,    /* operate on this */
                   int nonblock   /* TRUE or FALSE */)
{





#if defined(HAVE_FCNTL_O_NONBLOCK)

  /* most recent unix versions */
  int flags;
  flags = sfcntl(sockfd, F_GETFL, 0);
  if(nonblock)
    return sfcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
  return sfcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK));

Changes to jni/curl/lib/openldap.c.
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
                                      struct connectdata *conn)
{
  struct ldapconninfo *li;
  LDAPURLDesc *lud;
  int rc, proto;
  CURLcode status;

  rc = ldap_url_parse(data->change.url, &lud);
  if(rc != LDAP_URL_SUCCESS) {
    const char *msg = "url parsing problem";
    status = CURLE_URL_MALFORMAT;
    if(rc > LDAP_URL_SUCCESS && rc <= LDAP_URL_ERR_BADEXTS) {
      if(rc == LDAP_URL_ERR_MEM)
        status = CURLE_OUT_OF_MEMORY;
      msg = url_errs[rc];







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
                                      struct connectdata *conn)
{
  struct ldapconninfo *li;
  LDAPURLDesc *lud;
  int rc, proto;
  CURLcode status;

  rc = ldap_url_parse(data->state.url, &lud);
  if(rc != LDAP_URL_SUCCESS) {
    const char *msg = "url parsing problem";
    status = CURLE_URL_MALFORMAT;
    if(rc > LDAP_URL_SUCCESS && rc <= LDAP_URL_ERR_BADEXTS) {
      if(rc == LDAP_URL_ERR_MEM)
        status = CURLE_OUT_OF_MEMORY;
      msg = url_errs[rc];
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
        return result;
    }

    /* Have we installed the libcurl SSL handlers into the sockbuf yet? */
    if(!li->sslinst) {
      Sockbuf *sb;
      ldap_get_option(li->ld, LDAP_OPT_SOCKBUF, &sb);
      ber_sockbuf_add_io(sb, &ldapsb_tls, LBER_SBIOD_LEVEL_TRANSPORT, conn);
      li->sslinst = TRUE;
      li->recv = conn->recv[FIRSTSOCKET];
      li->send = conn->send[FIRSTSOCKET];
    }
  }
#endif








|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
        return result;
    }

    /* Have we installed the libcurl SSL handlers into the sockbuf yet? */
    if(!li->sslinst) {
      Sockbuf *sb;
      ldap_get_option(li->ld, LDAP_OPT_SOCKBUF, &sb);
      ber_sockbuf_add_io(sb, &ldapsb_tls, LBER_SBIOD_LEVEL_TRANSPORT, data);
      li->sslinst = TRUE;
      li->recv = conn->recv[FIRSTSOCKET];
      li->send = conn->send[FIRSTSOCKET];
    }
  }
#endif

361
362
363
364
365
366
367
368
369
370
371





372
373
374
375
376
377
378
}

static CURLcode ldap_disconnect(struct Curl_easy *data,
                                struct connectdata *conn, bool dead_connection)
{
  struct ldapconninfo *li = conn->proto.ldapc;
  (void) dead_connection;
  (void) data;

  if(li) {
    if(li->ld) {





      ldap_unbind_ext(li->ld, NULL, NULL);
      li->ld = NULL;
    }
    conn->proto.ldapc = NULL;
    free(li);
  }
  return CURLE_OK;







<



>
>
>
>
>







361
362
363
364
365
366
367

368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
}

static CURLcode ldap_disconnect(struct Curl_easy *data,
                                struct connectdata *conn, bool dead_connection)
{
  struct ldapconninfo *li = conn->proto.ldapc;
  (void) dead_connection;


  if(li) {
    if(li->ld) {
      if(conn->ssl[FIRSTSOCKET].use) {
        Sockbuf *sb;
        ldap_get_option(li->ld, LDAP_OPT_SOCKBUF, &sb);
        ber_sockbuf_add_io(sb, &ldapsb_tls, LBER_SBIOD_LEVEL_TRANSPORT, data);
      }
      ldap_unbind_ext(li->ld, NULL, NULL);
      li->ld = NULL;
    }
    conn->proto.ldapc = NULL;
    free(li);
  }
  return CURLE_OK;
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
  CURLcode status = CURLE_OK;
  int rc = 0;
  LDAPURLDesc *ludp = NULL;
  int msgid;

  connkeep(conn, "OpenLDAP do");

  infof(data, "LDAP local: %s\n", data->change.url);

  rc = ldap_url_parse(data->change.url, &ludp);
  if(rc != LDAP_URL_SUCCESS) {
    const char *msg = "url parsing problem";
    status = CURLE_URL_MALFORMAT;
    if(rc > LDAP_URL_SUCCESS && rc <= LDAP_URL_ERR_BADEXTS) {
      if(rc == LDAP_URL_ERR_MEM)
        status = CURLE_OUT_OF_MEMORY;
      msg = url_errs[rc];







|

|







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
  CURLcode status = CURLE_OK;
  int rc = 0;
  LDAPURLDesc *ludp = NULL;
  int msgid;

  connkeep(conn, "OpenLDAP do");

  infof(data, "LDAP local: %s\n", data->state.url);

  rc = ldap_url_parse(data->state.url, &ludp);
  if(rc != LDAP_URL_SUCCESS) {
    const char *msg = "url parsing problem";
    status = CURLE_URL_MALFORMAT;
    if(rc > LDAP_URL_SUCCESS && rc <= LDAP_URL_ERR_BADEXTS) {
      if(rc == LDAP_URL_ERR_MEM)
        status = CURLE_OUT_OF_MEMORY;
      msg = url_errs[rc];
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727



728

729
730
731
732
733
734
735


736
737
738
739
740
741
742



743

744
745
746
747
748
749
750


751
752
753
754
755
756
757
}

static int
ldapsb_tls_ctrl(Sockbuf_IO_Desc *sbiod, int opt, void *arg)
{
  (void)arg;
  if(opt == LBER_SB_OPT_DATA_READY) {
    struct connectdata *conn = sbiod->sbiod_pvt;
    return Curl_ssl_data_pending(conn, FIRSTSOCKET);
  }
  return 0;
}

static ber_slen_t
ldapsb_tls_read(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
{



  struct connectdata *conn = sbiod->sbiod_pvt;

  struct ldapconninfo *li = conn->proto.ldapc;
  ber_slen_t ret;
  CURLcode err = CURLE_RECV_ERROR;

  ret = (li->recv)(conn->data, FIRSTSOCKET, buf, len, &err);
  if(ret < 0 && err == CURLE_AGAIN) {
    SET_SOCKERRNO(EWOULDBLOCK);


  }
  return ret;
}

static ber_slen_t
ldapsb_tls_write(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
{



  struct connectdata *conn = sbiod->sbiod_pvt;

  struct ldapconninfo *li = conn->proto.ldapc;
  ber_slen_t ret;
  CURLcode err = CURLE_SEND_ERROR;

  ret = (li->send)(conn->data, FIRSTSOCKET, buf, len, &err);
  if(ret < 0 && err == CURLE_AGAIN) {
    SET_SOCKERRNO(EWOULDBLOCK);


  }
  return ret;
}

static Sockbuf_IO ldapsb_tls =
{
  ldapsb_tls_setup,







|
|







>
>
>
|
>
|
<
|

|
|
|
>
>







>
>
>
|
>
|
<
|
<
|
|
|
>
>







716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757

758

759
760
761
762
763
764
765
766
767
768
769
770
}

static int
ldapsb_tls_ctrl(Sockbuf_IO_Desc *sbiod, int opt, void *arg)
{
  (void)arg;
  if(opt == LBER_SB_OPT_DATA_READY) {
    struct Curl_easy *data = sbiod->sbiod_pvt;
    return Curl_ssl_data_pending(data->conn, FIRSTSOCKET);
  }
  return 0;
}

static ber_slen_t
ldapsb_tls_read(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
{
  struct Curl_easy *data = sbiod->sbiod_pvt;
  ber_slen_t ret = 0;
  if(data) {
    struct connectdata *conn = data->conn;
    if(conn) {
      struct ldapconninfo *li = conn->proto.ldapc;

      CURLcode err = CURLE_RECV_ERROR;

      ret = (li->recv)(data, FIRSTSOCKET, buf, len, &err);
      if(ret < 0 && err == CURLE_AGAIN) {
        SET_SOCKERRNO(EWOULDBLOCK);
      }
    }
  }
  return ret;
}

static ber_slen_t
ldapsb_tls_write(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
{
  struct Curl_easy *data = sbiod->sbiod_pvt;
  ber_slen_t ret = 0;
  if(data) {
    struct connectdata *conn = data->conn;
    if(conn) {
      struct ldapconninfo *li = conn->proto.ldapc;

      CURLcode err = CURLE_SEND_ERROR;

      ret = (li->send)(data, FIRSTSOCKET, buf, len, &err);
      if(ret < 0 && err == CURLE_AGAIN) {
        SET_SOCKERRNO(EWOULDBLOCK);
      }
    }
  }
  return ret;
}

static Sockbuf_IO ldapsb_tls =
{
  ldapsb_tls_setup,
Changes to jni/curl/lib/pingpong.h.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#define USE_PINGPONG
#endif

/* forward-declaration, this is defined in urldata.h */
struct connectdata;

typedef enum {
  FTPTRANSFER_BODY, /* yes do transfer a body */
  FTPTRANSFER_INFO, /* do still go through to get info/headers */
  FTPTRANSFER_NONE, /* don't get anything and don't get info */
  FTPTRANSFER_LAST  /* end of list marker, never used */
} curl_pp_transfer;

/*
 * 'pingpong' is the generic struct used for protocols doing server<->client
 * conversations in a back-and-forth style such as FTP, IMAP, POP3, SMTP etc.
 *
 * It holds response cache and non-blocking sending data.







|
|
|
<







29
30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
#define USE_PINGPONG
#endif

/* forward-declaration, this is defined in urldata.h */
struct connectdata;

typedef enum {
  PPTRANSFER_BODY, /* yes do transfer a body */
  PPTRANSFER_INFO, /* do still go through to get info/headers */
  PPTRANSFER_NONE  /* don't get anything and don't get info */

} curl_pp_transfer;

/*
 * 'pingpong' is the generic struct used for protocols doing server<->client
 * conversations in a back-and-forth style such as FTP, IMAP, POP3, SMTP etc.
 *
 * It holds response cache and non-blocking sending data.
Changes to jni/curl/lib/pop3.c.
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct POP3 *pop3 = data->req.p.pop3;
  const char *command = NULL;

  /* Calculate the default command */
  if(pop3->id[0] == '\0' || data->set.ftp_list_only) {
    command = "LIST";

    if(pop3->id[0] != '\0')
      /* Message specific LIST so skip the BODY transfer */
      pop3->transfer = FTPTRANSFER_INFO;
  }
  else
    command = "RETR";

  /* Send the command */
  if(pop3->id[0] != '\0')
    result = Curl_pp_sendf(data, &conn->proto.pop3c.pp, "%s %s",







|




|







567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct POP3 *pop3 = data->req.p.pop3;
  const char *command = NULL;

  /* Calculate the default command */
  if(pop3->id[0] == '\0' || data->set.list_only) {
    command = "LIST";

    if(pop3->id[0] != '\0')
      /* Message specific LIST so skip the BODY transfer */
      pop3->transfer = PPTRANSFER_INFO;
  }
  else
    command = "RETR";

  /* Send the command */
  if(pop3->id[0] != '\0')
    result = Curl_pp_sendf(data, &conn->proto.pop3c.pp, "%s %s",
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
     when there is no body to return. */
  pop3c->eob = 2;

  /* But since this initial CR LF pair is not part of the actual body, we set
     the strip counter here so that these bytes won't be delivered. */
  pop3c->strip = 2;

  if(pop3->transfer == FTPTRANSFER_BODY) {
    /* POP3 download */
    Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);

    if(pp->cache) {
      /* The header "cache" contains a bunch of data that is actually body
         content so send it as such. Note that there may even be additional
         "headers" after the body */







|







912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
     when there is no body to return. */
  pop3c->eob = 2;

  /* But since this initial CR LF pair is not part of the actual body, we set
     the strip counter here so that these bytes won't be delivered. */
  pop3c->strip = 2;

  if(pop3->transfer == PPTRANSFER_BODY) {
    /* POP3 download */
    Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);

    if(pp->cache) {
      /* The header "cache" contains a bunch of data that is actually body
         content so send it as such. Note that there may even be additional
         "headers" after the body */
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
  }

  /* Cleanup our per-request based variables */
  Curl_safefree(pop3->id);
  Curl_safefree(pop3->custom);

  /* Clear the transfer mode for the next request */
  pop3->transfer = FTPTRANSFER_BODY;

  return result;
}

/***********************************************************************
 *
 * pop3_perform()







|







1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
  }

  /* Cleanup our per-request based variables */
  Curl_safefree(pop3->id);
  Curl_safefree(pop3->custom);

  /* Clear the transfer mode for the next request */
  pop3->transfer = PPTRANSFER_BODY;

  return result;
}

/***********************************************************************
 *
 * pop3_perform()
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
  struct connectdata *conn = data->conn;
  struct POP3 *pop3 = data->req.p.pop3;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* Requested no body means no transfer */
    pop3->transfer = FTPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* Start the first command in the DO phase */
  result = pop3_perform_command(data);
  if(result)







|







1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
  struct connectdata *conn = data->conn;
  struct POP3 *pop3 = data->req.p.pop3;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* Requested no body means no transfer */
    pop3->transfer = PPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* Start the first command in the DO phase */
  result = pop3_perform_command(data);
  if(result)
Changes to jni/curl/lib/progress.c.
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

  else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
    /* 'XX.XM' is good as long as we're less than 100 megs */
    msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
              CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE,
              (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );

#if (CURL_SIZEOF_CURL_OFF_T > 4)

  else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
    /* 'XXXXM' is good until we're at 10000MB or above */
    msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);

  else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
    /* 10000 MB - 100 GB, we show it as XX.XG */







|







81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

  else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
    /* 'XX.XM' is good as long as we're less than 100 megs */
    msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
              CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE,
              (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );

#if (SIZEOF_CURL_OFF_T > 4)

  else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
    /* 'XXXXM' is good until we're at 10000MB or above */
    msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);

  else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
    /* 10000 MB - 100 GB, we show it as XX.XG */
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338

/*
 * Update the timestamp and sizestamp to use for rate limit calculations.
 */
void Curl_ratelimit(struct Curl_easy *data, struct curltime now)
{
  /* don't set a new stamp unless the time since last update is long enough */
  if(data->set.max_recv_speed > 0) {
    if(Curl_timediff(now, data->progress.dl_limit_start) >=
       MIN_RATE_LIMIT_PERIOD) {
      data->progress.dl_limit_start = now;
      data->progress.dl_limit_size = data->progress.downloaded;
    }
  }
  if(data->set.max_send_speed > 0) {
    if(Curl_timediff(now, data->progress.ul_limit_start) >=
       MIN_RATE_LIMIT_PERIOD) {
      data->progress.ul_limit_start = now;
      data->progress.ul_limit_size = data->progress.uploaded;
    }
  }
}







|






|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338

/*
 * Update the timestamp and sizestamp to use for rate limit calculations.
 */
void Curl_ratelimit(struct Curl_easy *data, struct curltime now)
{
  /* don't set a new stamp unless the time since last update is long enough */
  if(data->set.max_recv_speed) {
    if(Curl_timediff(now, data->progress.dl_limit_start) >=
       MIN_RATE_LIMIT_PERIOD) {
      data->progress.dl_limit_start = now;
      data->progress.dl_limit_size = data->progress.downloaded;
    }
  }
  if(data->set.max_send_speed) {
    if(Curl_timediff(now, data->progress.ul_limit_start) >=
       MIN_RATE_LIMIT_PERIOD) {
      data->progress.ul_limit_start = now;
      data->progress.ul_limit_size = data->progress.uploaded;
    }
  }
}
Changes to jni/curl/lib/rtsp.c.
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
    return result;

  p_proxyuserpwd = data->state.aptr.proxyuserpwd;
  p_userpwd = data->state.aptr.userpwd;

  /* Referrer */
  Curl_safefree(data->state.aptr.ref);
  if(data->change.referer && !Curl_checkheaders(data, "Referer"))
    data->state.aptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
  else
    data->state.aptr.ref = NULL;

  p_referrer = data->state.aptr.ref;

  /*
   * Range Header







|
|







400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
    return result;

  p_proxyuserpwd = data->state.aptr.proxyuserpwd;
  p_userpwd = data->state.aptr.userpwd;

  /* Referrer */
  Curl_safefree(data->state.aptr.ref);
  if(data->state.referer && !Curl_checkheaders(data, "Referer"))
    data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
  else
    data->state.aptr.ref = NULL;

  p_referrer = data->state.aptr.ref;

  /*
   * Range Header
Changes to jni/curl/lib/sendf.c.
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
  else
    i = 0;

  if(newtype) {
    /* store this information in the state struct for later use */
    Curl_dyn_init(&s->tempwrite[i].b, DYN_PAUSE_BUFFER);
    s->tempwrite[i].type = type;

    if(newtype)
      s->tempcount++;
  }

  if(Curl_dyn_addn(&s->tempwrite[i].b, (unsigned char *)ptr, len))
    return CURLE_OUT_OF_MEMORY;

  /* mark the connection as RECV paused */
  k->keepon |= KEEP_RECV_PAUSE;







<
<
|







494
495
496
497
498
499
500


501
502
503
504
505
506
507
508
  else
    i = 0;

  if(newtype) {
    /* store this information in the state struct for later use */
    Curl_dyn_init(&s->tempwrite[i].b, DYN_PAUSE_BUFFER);
    s->tempwrite[i].type = type;


    s->tempcount++;
  }

  if(Curl_dyn_addn(&s->tempwrite[i].b, (unsigned char *)ptr, len))
    return CURLE_OUT_OF_MEMORY;

  /* mark the connection as RECV paused */
  k->keepon |= KEEP_RECV_PAUSE;
Changes to jni/curl/lib/setopt.c.
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
    data->set.dns_cache_timeout = arg;
    break;
  case CURLOPT_DNS_USE_GLOBAL_CACHE:
    /* deprecated */
    break;
  case CURLOPT_SSL_CIPHER_LIST:
    /* set a list of cipher we want to use in the SSL connection */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER_LIST_ORIG],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_CIPHER_LIST:
    /* set a list of cipher we want to use in the SSL connection for proxy */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER_LIST_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_TLS13_CIPHERS:
    if(Curl_ssl_tls13_ciphersuites()) {
      /* set preferred list of TLS 1.3 cipher suites */
      result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER13_LIST_ORIG],
                              va_arg(param, char *));
    }
    else
      return CURLE_NOT_BUILT_IN;
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_TLS13_CIPHERS:







|












|







173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
    data->set.dns_cache_timeout = arg;
    break;
  case CURLOPT_DNS_USE_GLOBAL_CACHE:
    /* deprecated */
    break;
  case CURLOPT_SSL_CIPHER_LIST:
    /* set a list of cipher we want to use in the SSL connection */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER_LIST],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_CIPHER_LIST:
    /* set a list of cipher we want to use in the SSL connection for proxy */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER_LIST_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_TLS13_CIPHERS:
    if(Curl_ssl_tls13_ciphersuites()) {
      /* set preferred list of TLS 1.3 cipher suites */
      result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER13_LIST],
                              va_arg(param, char *));
    }
    else
      return CURLE_NOT_BUILT_IN;
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_TLS13_CIPHERS:
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
    /*
     * Basic been set by default it need to be unset here
     */
    if(data->set.str[STRING_AWS_SIGV4])
      data->set.httpauth = CURLAUTH_AWS_SIGV4;
    break;

#endif   /* CURL_DISABLE_HTTP */

  case CURLOPT_MIMEPOST:
    /*
     * Set to make us do MIME/form POST
     */
    result = Curl_mime_set_subparts(&data->set.mimepost,
                                    va_arg(param, curl_mime *), FALSE);
    if(!result) {
      data->set.method = HTTPREQ_POST_MIME;
      data->set.opt_no_body = FALSE; /* this is implied */
    }
    break;

  case CURLOPT_REFERER:
    /*
     * String to set in the HTTP Referer: field.
     */
    if(data->change.referer_alloc) {
      Curl_safefree(data->change.referer);
      data->change.referer_alloc = FALSE;
    }
    result = Curl_setstropt(&data->set.str[STRING_SET_REFERER],
                            va_arg(param, char *));
    data->change.referer = data->set.str[STRING_SET_REFERER];
    break;

  case CURLOPT_USERAGENT:
    /*
     * String to use in the HTTP User-Agent field
     */
    result = Curl_setstropt(&data->set.str[STRING_USERAGENT],
                            va_arg(param, char *));
    break;

  case CURLOPT_HTTPHEADER:
    /*
     * Set a list with HTTP headers to use (or replace internals with)
     */
    data->set.headers = va_arg(param, struct curl_slist *);
    break;

#ifndef CURL_DISABLE_HTTP
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXYHEADER:
    /*
     * Set a list with proxy headers to use (or replace internals with)
     *
     * Since CURLOPT_HTTPHEADER was the only way to set HTTP headers for a
     * long time we remain doing it this way until CURLOPT_PROXYHEADER is







<
<
















|
|
|



|

















<







649
650
651
652
653
654
655


656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695

696
697
698
699
700
701
702
    /*
     * Basic been set by default it need to be unset here
     */
    if(data->set.str[STRING_AWS_SIGV4])
      data->set.httpauth = CURLAUTH_AWS_SIGV4;
    break;



  case CURLOPT_MIMEPOST:
    /*
     * Set to make us do MIME/form POST
     */
    result = Curl_mime_set_subparts(&data->set.mimepost,
                                    va_arg(param, curl_mime *), FALSE);
    if(!result) {
      data->set.method = HTTPREQ_POST_MIME;
      data->set.opt_no_body = FALSE; /* this is implied */
    }
    break;

  case CURLOPT_REFERER:
    /*
     * String to set in the HTTP Referer: field.
     */
    if(data->state.referer_alloc) {
      Curl_safefree(data->state.referer);
      data->state.referer_alloc = FALSE;
    }
    result = Curl_setstropt(&data->set.str[STRING_SET_REFERER],
                            va_arg(param, char *));
    data->state.referer = data->set.str[STRING_SET_REFERER];
    break;

  case CURLOPT_USERAGENT:
    /*
     * String to use in the HTTP User-Agent field
     */
    result = Curl_setstropt(&data->set.str[STRING_USERAGENT],
                            va_arg(param, char *));
    break;

  case CURLOPT_HTTPHEADER:
    /*
     * Set a list with HTTP headers to use (or replace internals with)
     */
    data->set.headers = va_arg(param, struct curl_slist *);
    break;


#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXYHEADER:
    /*
     * Set a list with proxy headers to use (or replace internals with)
     *
     * Since CURLOPT_HTTPHEADER was the only way to set HTTP headers for a
     * long time we remain doing it this way until CURLOPT_PROXYHEADER is
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
    if(argptr) {
      struct curl_slist *cl;
      /* general protection against mistakes and abuse */
      if(strlen(argptr) > CURL_MAX_INPUT_LENGTH)
        return CURLE_BAD_FUNCTION_ARGUMENT;
      /* append the cookie file name to the list of file names, and deal with
         them later */
      cl = curl_slist_append(data->change.cookielist, argptr);
      if(!cl) {
        curl_slist_free_all(data->change.cookielist);
        data->change.cookielist = NULL;
        return CURLE_OUT_OF_MEMORY;
      }
      data->change.cookielist = cl; /* store the list for later use */
    }
    break;

  case CURLOPT_COOKIEJAR:
    /*
     * Set cookie file name to dump all cookies to when we're done.
     */







|

|
|


|







740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
    if(argptr) {
      struct curl_slist *cl;
      /* general protection against mistakes and abuse */
      if(strlen(argptr) > CURL_MAX_INPUT_LENGTH)
        return CURLE_BAD_FUNCTION_ARGUMENT;
      /* append the cookie file name to the list of file names, and deal with
         them later */
      cl = curl_slist_append(data->state.cookielist, argptr);
      if(!cl) {
        curl_slist_free_all(data->state.cookielist);
        data->state.cookielist = NULL;
        return CURLE_OUT_OF_MEMORY;
      }
      data->state.cookielist = cl; /* store the list for later use */
    }
    break;

  case CURLOPT_COOKIEJAR:
    /*
     * Set cookie file name to dump all cookies to when we're done.
     */
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911





912

913
914
915
916
917
918
919
      return CURLE_UNSUPPORTED_PROTOCOL;
#else
    if(arg >= CURL_HTTP_VERSION_LAST)
      return CURLE_UNSUPPORTED_PROTOCOL;
    if(arg == CURL_HTTP_VERSION_NONE)
      arg = CURL_HTTP_VERSION_2TLS;
#endif
    data->set.httpversion = arg;
    break;

  case CURLOPT_EXPECT_100_TIMEOUT_MS:
    /*
     * Time to wait for a response to a HTTP request containing an
     * Expect: 100-continue header before sending the data anyway.
     */
    arg = va_arg(param, long);
    if(arg < 0)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.expect_100_timeout = arg;
    break;

  case CURLOPT_HTTP09_ALLOWED:
    arg = va_arg(param, unsigned long);
    if(arg > 1L)
      return CURLE_BAD_FUNCTION_ARGUMENT;





    data->set.http09_allowed = arg ? TRUE : FALSE;

    break;
#endif   /* CURL_DISABLE_HTTP */

  case CURLOPT_HTTPAUTH:
    /*
     * Set HTTP Authentication type BITMASK.
     */







|

















>
>
>
>
>

>







884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
      return CURLE_UNSUPPORTED_PROTOCOL;
#else
    if(arg >= CURL_HTTP_VERSION_LAST)
      return CURLE_UNSUPPORTED_PROTOCOL;
    if(arg == CURL_HTTP_VERSION_NONE)
      arg = CURL_HTTP_VERSION_2TLS;
#endif
    data->set.httpwant = (unsigned char)arg;
    break;

  case CURLOPT_EXPECT_100_TIMEOUT_MS:
    /*
     * Time to wait for a response to a HTTP request containing an
     * Expect: 100-continue header before sending the data anyway.
     */
    arg = va_arg(param, long);
    if(arg < 0)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.expect_100_timeout = arg;
    break;

  case CURLOPT_HTTP09_ALLOWED:
    arg = va_arg(param, unsigned long);
    if(arg > 1L)
      return CURLE_BAD_FUNCTION_ARGUMENT;
#ifdef USE_HYPER
    /* Hyper does not support HTTP/0.9 */
    if(arg)
      return CURLE_BAD_FUNCTION_ARGUMENT;
#else
    data->set.http09_allowed = arg ? TRUE : FALSE;
#endif
    break;
#endif   /* CURL_DISABLE_HTTP */

  case CURLOPT_HTTPAUTH:
    /*
     * Set HTTP Authentication type BITMASK.
     */
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
    break;

  case CURLOPT_DIRLISTONLY:
    /*
     * An option that changes the command to one that asks for a list only, no
     * file info details. Used for FTP, POP3 and SFTP.
     */
    data->set.ftp_list_only = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;

  case CURLOPT_APPEND:
    /*
     * We want to upload and append to an existing file. Used for FTP and
     * SFTP.
     */
    data->set.ftp_append = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;

#ifndef CURL_DISABLE_FTP
  case CURLOPT_FTP_FILEMETHOD:
    /*
     * How do access files over FTP.
     */







|







|







1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
    break;

  case CURLOPT_DIRLISTONLY:
    /*
     * An option that changes the command to one that asks for a list only, no
     * file info details. Used for FTP, POP3 and SFTP.
     */
    data->set.list_only = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;

  case CURLOPT_APPEND:
    /*
     * We want to upload and append to an existing file. Used for FTP and
     * SFTP.
     */
    data->set.remote_append = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;

#ifndef CURL_DISABLE_FTP
  case CURLOPT_FTP_FILEMETHOD:
    /*
     * How do access files over FTP.
     */
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
     */
    data->set.uh = va_arg(param, CURLU *);
    break;
  case CURLOPT_URL:
    /*
     * The URL to fetch.
     */
    if(data->change.url_alloc) {
      /* the already set URL is allocated, free it first! */
      Curl_safefree(data->change.url);
      data->change.url_alloc = FALSE;
    }
    result = Curl_setstropt(&data->set.str[STRING_SET_URL],
                            va_arg(param, char *));
    data->change.url = data->set.str[STRING_SET_URL];
    break;
  case CURLOPT_PORT:
    /*
     * The port number to use when getting the URL
     */
    arg = va_arg(param, long);
    if((arg < 0) || (arg > 65535))







|

|
|



|







1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
     */
    data->set.uh = va_arg(param, CURLU *);
    break;
  case CURLOPT_URL:
    /*
     * The URL to fetch.
     */
    if(data->state.url_alloc) {
      /* the already set URL is allocated, free it first! */
      Curl_safefree(data->state.url);
      data->state.url_alloc = FALSE;
    }
    result = Curl_setstropt(&data->set.str[STRING_SET_URL],
                            va_arg(param, char *));
    data->state.url = data->set.str[STRING_SET_URL];
    break;
  case CURLOPT_PORT:
    /*
     * The port number to use when getting the URL
     */
    arg = va_arg(param, long);
    if((arg < 0) || (arg > 65535))
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
  case CURLOPT_USERNAME:
    /*
     * authentication user name to use in the operation
     */
    result = Curl_setstropt(&data->set.str[STRING_USERNAME],
                            va_arg(param, char *));
    break;

  case CURLOPT_PASSWORD:
    /*
     * authentication password to use in the operation
     */
    result = Curl_setstropt(&data->set.str[STRING_PASSWORD],
                            va_arg(param, char *));
    break;







<







1415
1416
1417
1418
1419
1420
1421

1422
1423
1424
1425
1426
1427
1428
  case CURLOPT_USERNAME:
    /*
     * authentication user name to use in the operation
     */
    result = Curl_setstropt(&data->set.str[STRING_USERNAME],
                            va_arg(param, char *));
    break;

  case CURLOPT_PASSWORD:
    /*
     * authentication password to use in the operation
     */
    result = Curl_setstropt(&data->set.str[STRING_PASSWORD],
                            va_arg(param, char *));
    break;
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
     *
     * Prefix the HOST with dash (-) to _remove_ the entry from the cache.
     *
     * This API can remove any entry from the DNS cache, but only entries
     * that aren't actually in use right now will be pruned immediately.
     */
    data->set.resolve = va_arg(param, struct curl_slist *);
    data->change.resolve = data->set.resolve;
    break;
  case CURLOPT_PROGRESSFUNCTION:
    /*
     * Progress callback function
     */
    data->set.fprogress = va_arg(param, curl_progress_callback);
    if(data->set.fprogress)







|







1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
     *
     * Prefix the HOST with dash (-) to _remove_ the entry from the cache.
     *
     * This API can remove any entry from the DNS cache, but only entries
     * that aren't actually in use right now will be pruned immediately.
     */
    data->set.resolve = va_arg(param, struct curl_slist *);
    data->state.resolve = data->set.resolve;
    break;
  case CURLOPT_PROGRESSFUNCTION:
    /*
     * Progress callback function
     */
    data->set.fprogress = va_arg(param, curl_progress_callback);
    if(data->set.fprogress)
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
     */
    data->set.ioctl_client = va_arg(param, void *);
    break;
  case CURLOPT_SSLCERT:
    /*
     * String that holds file name of the SSL certificate to use
     */
    result = Curl_setstropt(&data->set.str[STRING_CERT_ORIG],
                            va_arg(param, char *));
    break;
  case CURLOPT_SSLCERT_BLOB:
    /*
     * Blob that holds file name of the SSL certificate to use
     */
    result = Curl_setblobopt(&data->set.blobs[BLOB_CERT_ORIG],
                             va_arg(param, struct curl_blob *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLCERT:
    /*
     * String that holds file name of the SSL certificate to use for proxy
     */







|






|







1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
     */
    data->set.ioctl_client = va_arg(param, void *);
    break;
  case CURLOPT_SSLCERT:
    /*
     * String that holds file name of the SSL certificate to use
     */
    result = Curl_setstropt(&data->set.str[STRING_CERT],
                            va_arg(param, char *));
    break;
  case CURLOPT_SSLCERT_BLOB:
    /*
     * Blob that holds file name of the SSL certificate to use
     */
    result = Curl_setblobopt(&data->set.blobs[BLOB_CERT],
                             va_arg(param, struct curl_blob *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLCERT:
    /*
     * String that holds file name of the SSL certificate to use for proxy
     */
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
                             va_arg(param, struct curl_blob *));
    break;
#endif
  case CURLOPT_SSLCERTTYPE:
    /*
     * String that holds file type of the SSL certificate to use
     */
    result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_ORIG],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLCERTTYPE:
    /*
     * String that holds file type of the SSL certificate to use for proxy
     */
    result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_SSLKEY:
    /*
     * String that holds file name of the SSL key to use
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY_ORIG],
                            va_arg(param, char *));
    break;
  case CURLOPT_SSLKEY_BLOB:
    /*
     * Blob that holds file name of the SSL key to use
     */
    result = Curl_setblobopt(&data->set.blobs[BLOB_KEY_ORIG],
                             va_arg(param, struct curl_blob *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLKEY:
    /*
     * String that holds file name of the SSL key to use for proxy
     */







|















|






|







1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
                             va_arg(param, struct curl_blob *));
    break;
#endif
  case CURLOPT_SSLCERTTYPE:
    /*
     * String that holds file type of the SSL certificate to use
     */
    result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLCERTTYPE:
    /*
     * String that holds file type of the SSL certificate to use for proxy
     */
    result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_SSLKEY:
    /*
     * String that holds file name of the SSL key to use
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY],
                            va_arg(param, char *));
    break;
  case CURLOPT_SSLKEY_BLOB:
    /*
     * Blob that holds file name of the SSL key to use
     */
    result = Curl_setblobopt(&data->set.blobs[BLOB_KEY],
                             va_arg(param, struct curl_blob *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLKEY:
    /*
     * String that holds file name of the SSL key to use for proxy
     */
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
                             va_arg(param, struct curl_blob *));
    break;
#endif
  case CURLOPT_SSLKEYTYPE:
    /*
     * String that holds file type of the SSL key to use
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_ORIG],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLKEYTYPE:
    /*
     * String that holds file type of the SSL key to use for proxy
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_KEYPASSWD:
    /*
     * String that holds the SSL or SSH private key password.
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD_ORIG],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_KEYPASSWD:
    /*
     * String that holds the SSL private key password for proxy.
     */







|















|







1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
                             va_arg(param, struct curl_blob *));
    break;
#endif
  case CURLOPT_SSLKEYTYPE:
    /*
     * String that holds file type of the SSL key to use
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSLKEYTYPE:
    /*
     * String that holds file type of the SSL key to use for proxy
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_KEYPASSWD:
    /*
     * String that holds the SSL or SSH private key password.
     */
    result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_KEYPASSWD:
    /*
     * String that holds the SSL private key password for proxy.
     */
1847
1848
1849
1850
1851
1852
1853







1854
1855
1856
1857
1858
1859
1860
      TRUE : FALSE;

    /* Update the current connection ssl_config. */
    if(data->conn) {
      data->conn->ssl_config.verifypeer =
        data->set.ssl.primary.verifypeer;
    }







    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_VERIFYPEER:
    /*
     * Enable peer SSL verifying for proxy.
     */
    data->set.proxy_ssl.primary.verifypeer =







>
>
>
>
>
>
>







1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
      TRUE : FALSE;

    /* Update the current connection ssl_config. */
    if(data->conn) {
      data->conn->ssl_config.verifypeer =
        data->set.ssl.primary.verifypeer;
    }
    break;
  case CURLOPT_DOH_SSL_VERIFYPEER:
    /*
     * Enable peer SSL verifying for DOH.
     */
    data->set.doh_verifypeer = (0 != va_arg(param, long)) ?
      TRUE : FALSE;
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_VERIFYPEER:
    /*
     * Enable peer SSL verifying for proxy.
     */
    data->set.proxy_ssl.primary.verifypeer =
1880
1881
1882
1883
1884
1885
1886









1887
1888
1889
1890
1891
1892
1893

    /* Update the current connection ssl_config. */
    if(data->conn) {
      data->conn->ssl_config.verifyhost =
        data->set.ssl.primary.verifyhost;
    }
    break;









#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_VERIFYHOST:
    /*
     * Enable verification of the host name in the peer certificate for proxy
     */
    arg = va_arg(param, long);








>
>
>
>
>
>
>
>
>







1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911

    /* Update the current connection ssl_config. */
    if(data->conn) {
      data->conn->ssl_config.verifyhost =
        data->set.ssl.primary.verifyhost;
    }
    break;
  case CURLOPT_DOH_SSL_VERIFYHOST:
    /*
     * Enable verification of the host name in the peer certificate for DOH
     */
    arg = va_arg(param, long);

    /* Treat both 1 and 2 as TRUE */
    data->set.doh_verifyhost = (bool)((arg & 3) ? TRUE : FALSE);
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_VERIFYHOST:
    /*
     * Enable verification of the host name in the peer certificate for proxy
     */
    arg = va_arg(param, long);

1914
1915
1916
1917
1918
1919
1920












1921
1922
1923
1924
1925
1926
1927
      TRUE : FALSE;

    /* Update the current connection ssl_config. */
    if(data->conn) {
      data->conn->ssl_config.verifystatus =
        data->set.ssl.primary.verifystatus;
    }












    break;
  case CURLOPT_SSL_CTX_FUNCTION:
    /*
     * Set a SSL_CTX callback
     */
#ifdef USE_SSL
    if(Curl_ssl->supports & SSLSUPP_SSL_CTX)







>
>
>
>
>
>
>
>
>
>
>
>







1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
      TRUE : FALSE;

    /* Update the current connection ssl_config. */
    if(data->conn) {
      data->conn->ssl_config.verifystatus =
        data->set.ssl.primary.verifystatus;
    }
    break;
  case CURLOPT_DOH_SSL_VERIFYSTATUS:
    /*
     * Enable certificate status verifying for DOH.
     */
    if(!Curl_ssl_cert_status_request()) {
      result = CURLE_NOT_BUILT_IN;
      break;
    }

    data->set.doh_verifystatus = (0 != va_arg(param, long)) ?
      TRUE : FALSE;
    break;
  case CURLOPT_SSL_CTX_FUNCTION:
    /*
     * Set a SSL_CTX callback
     */
#ifdef USE_SSL
    if(Curl_ssl->supports & SSLSUPP_SSL_CTX)
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
  case CURLOPT_PINNEDPUBLICKEY:
    /*
     * Set pinned public key for SSL connection.
     * Specify file name of the public key in DER format.
     */
#ifdef USE_SSL
    if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY)
      result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG],
                              va_arg(param, char *));
    else
#endif
      result = CURLE_NOT_BUILT_IN;
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_PINNEDPUBLICKEY:







|







1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
  case CURLOPT_PINNEDPUBLICKEY:
    /*
     * Set pinned public key for SSL connection.
     * Specify file name of the public key in DER format.
     */
#ifdef USE_SSL
    if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY)
      result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY],
                              va_arg(param, char *));
    else
#endif
      result = CURLE_NOT_BUILT_IN;
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_PINNEDPUBLICKEY:
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
      result = CURLE_NOT_BUILT_IN;
    break;
#endif
  case CURLOPT_CAINFO:
    /*
     * Set CA info for SSL connection. Specify file name of the CA certificate
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE_ORIG],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_CAINFO:
    /*
     * Set CA info SSL connection for proxy. Specify file name of the
     * CA certificate
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_CAPATH:
    /*
     * Set CA path info for SSL connection. Specify directory name of the CA
     * certificates which have been prepared using openssl c_rehash utility.
     */
#ifdef USE_SSL
    if(Curl_ssl->supports & SSLSUPP_CA_PATH)
      /* This does not work on windows. */
      result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_ORIG],
                              va_arg(param, char *));
    else
#endif
      result = CURLE_NOT_BUILT_IN;
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_CAPATH:







|




















|







2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
      result = CURLE_NOT_BUILT_IN;
    break;
#endif
  case CURLOPT_CAINFO:
    /*
     * Set CA info for SSL connection. Specify file name of the CA certificate
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_CAINFO:
    /*
     * Set CA info SSL connection for proxy. Specify file name of the
     * CA certificate
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_CAPATH:
    /*
     * Set CA path info for SSL connection. Specify directory name of the CA
     * certificates which have been prepared using openssl c_rehash utility.
     */
#ifdef USE_SSL
    if(Curl_ssl->supports & SSLSUPP_CA_PATH)
      /* This does not work on windows. */
      result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH],
                              va_arg(param, char *));
    else
#endif
      result = CURLE_NOT_BUILT_IN;
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_CAPATH:
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
    break;
#endif
  case CURLOPT_CRLFILE:
    /*
     * Set CRL file info for SSL connection. Specify file name of the CRL
     * to check certificates revocation
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE_ORIG],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_CRLFILE:
    /*
     * Set CRL file info for SSL connection for proxy. Specify file name of the
     * CRL to check certificates revocation
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_ISSUERCERT:
    /*
     * Set Issuer certificate file
     * to check certificates issuer
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_ISSUERCERT_ORIG],
                            va_arg(param, char *));
    break;
  case CURLOPT_ISSUERCERT_BLOB:
    /*
     * Blob that holds Issuer certificate to check certificates issuer
     */
    result = Curl_setblobopt(&data->set.blobs[BLOB_SSL_ISSUERCERT_ORIG],
                             va_arg(param, struct curl_blob *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_ISSUERCERT:
    /*
     * Set Issuer certificate file
     * to check certificates issuer







|

















|






|







2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
    break;
#endif
  case CURLOPT_CRLFILE:
    /*
     * Set CRL file info for SSL connection. Specify file name of the CRL
     * to check certificates revocation
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE],
                            va_arg(param, char *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_CRLFILE:
    /*
     * Set CRL file info for SSL connection for proxy. Specify file name of the
     * CRL to check certificates revocation
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE_PROXY],
                            va_arg(param, char *));
    break;
#endif
  case CURLOPT_ISSUERCERT:
    /*
     * Set Issuer certificate file
     * to check certificates issuer
     */
    result = Curl_setstropt(&data->set.str[STRING_SSL_ISSUERCERT],
                            va_arg(param, char *));
    break;
  case CURLOPT_ISSUERCERT_BLOB:
    /*
     * Blob that holds Issuer certificate to check certificates issuer
     */
    result = Curl_setblobopt(&data->set.blobs[BLOB_SSL_ISSUERCERT],
                             va_arg(param, struct curl_blob *));
    break;
#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_ISSUERCERT:
    /*
     * Set Issuer certificate file
     * to check certificates issuer
2240
2241
2242
2243
2244
2245
2246


2247
2248
2249
2250
2251
2252
2253
    arg = va_arg(param, long);
    data->set.ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
    data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
    data->set.ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
    data->set.ssl.revoke_best_effort = !!(arg & CURLSSLOPT_REVOKE_BEST_EFFORT);
    data->set.ssl.native_ca_store = !!(arg & CURLSSLOPT_NATIVE_CA);


    break;

#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.proxy_ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);







>
>







2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
    arg = va_arg(param, long);
    data->set.ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
    data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
    data->set.ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
    data->set.ssl.revoke_best_effort = !!(arg & CURLSSLOPT_REVOKE_BEST_EFFORT);
    data->set.ssl.native_ca_store = !!(arg & CURLSSLOPT_NATIVE_CA);
    /* If a setting is added here it should also be added in dohprobe()
       which sets its own CURLOPT_SSL_OPTIONS based on these settings. */
    break;

#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.proxy_ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
    break;
  case CURLOPT_FNMATCH_DATA:
    data->set.fnmatch_data = va_arg(param, void *);
    break;
#endif
#ifdef USE_TLS_SRP
  case CURLOPT_TLSAUTH_USERNAME:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_ORIG],
                            va_arg(param, char *));
    if(data->set.str[STRING_TLSAUTH_USERNAME_ORIG] && !data->set.ssl.authtype)
      data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
    break;
  case CURLOPT_PROXY_TLSAUTH_USERNAME:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_PROXY],
                            va_arg(param, char *));
#ifndef CURL_DISABLE_PROXY
    if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&
       !data->set.proxy_ssl.authtype)
      data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
#endif
    break;
  case CURLOPT_TLSAUTH_PASSWORD:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD_ORIG],
                            va_arg(param, char *));
    if(data->set.str[STRING_TLSAUTH_USERNAME_ORIG] && !data->set.ssl.authtype)
      data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
    break;
  case CURLOPT_PROXY_TLSAUTH_PASSWORD:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD_PROXY],
                            va_arg(param, char *));
#ifndef CURL_DISABLE_PROXY
    if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&







|

|












|

|







2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
    break;
  case CURLOPT_FNMATCH_DATA:
    data->set.fnmatch_data = va_arg(param, void *);
    break;
#endif
#ifdef USE_TLS_SRP
  case CURLOPT_TLSAUTH_USERNAME:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME],
                            va_arg(param, char *));
    if(data->set.str[STRING_TLSAUTH_USERNAME] && !data->set.ssl.authtype)
      data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
    break;
  case CURLOPT_PROXY_TLSAUTH_USERNAME:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_PROXY],
                            va_arg(param, char *));
#ifndef CURL_DISABLE_PROXY
    if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&
       !data->set.proxy_ssl.authtype)
      data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
#endif
    break;
  case CURLOPT_TLSAUTH_PASSWORD:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD],
                            va_arg(param, char *));
    if(data->set.str[STRING_TLSAUTH_USERNAME] && !data->set.ssl.authtype)
      data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
    break;
  case CURLOPT_PROXY_TLSAUTH_PASSWORD:
    result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD_PROXY],
                            va_arg(param, char *));
#ifndef CURL_DISABLE_PROXY
    if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&
Changes to jni/curl/lib/sha256.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2017, Florin Petriuc, <petriuc.florin@gmail.com>
 * Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2017, Florin Petriuc, <petriuc.florin@gmail.com>
 * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  #define HAS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

/* Please keep the SSL backend-specific #if branches in this order:
 *
 * 1. USE_OPENSSL
 * 2. USE_GNUTLS_NETTLE
 * 3. USE_GNUTLS
 * 4. USE_MBEDTLS
 * 5. USE_COMMON_CRYPTO
 * 6. USE_WIN32_CRYPTO
 *
 * This ensures that the same SSL branch gets activated throughout this source
 * file even if multiple backends are enabled at the same time.
 */

#if defined(USE_OPENSSL_SHA256)

/* When OpenSSL is available we use the SHA256-function from OpenSSL */
#include <openssl/sha.h>

#elif defined(USE_GNUTLS_NETTLE)

#include <nettle/sha.h>

#include "curl_memory.h"

/* The last #include file should be: */
#include "memdebug.h"







|
|
<
|
|










|







46
47
48
49
50
51
52
53
54

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  #define HAS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

/* Please keep the SSL backend-specific #if branches in this order:
 *
 * 1. USE_OPENSSL
 * 2. USE_GNUTLS
 * 3. USE_MBEDTLS

 * 4. USE_COMMON_CRYPTO
 * 5. USE_WIN32_CRYPTO
 *
 * This ensures that the same SSL branch gets activated throughout this source
 * file even if multiple backends are enabled at the same time.
 */

#if defined(USE_OPENSSL_SHA256)

/* When OpenSSL is available we use the SHA256-function from OpenSSL */
#include <openssl/sha.h>

#elif defined(USE_GNUTLS)

#include <nettle/sha.h>

#include "curl_memory.h"

/* The last #include file should be: */
#include "memdebug.h"
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
}

static void SHA256_Final(unsigned char *digest, SHA256_CTX *ctx)
{
  sha256_digest(ctx, SHA256_DIGEST_SIZE, digest);
}

#elif defined(USE_GNUTLS)

#include <gcrypt.h>

#include "curl_memory.h"

/* The last #include file should be: */
#include "memdebug.h"

typedef gcry_md_hd_t SHA256_CTX;

static void SHA256_Init(SHA256_CTX *ctx)
{
  gcry_md_open(ctx, GCRY_MD_SHA256, 0);
}

static void SHA256_Update(SHA256_CTX *ctx,
                          const unsigned char *data,
                          unsigned int length)
{
  gcry_md_write(*ctx, data, length);
}

static void SHA256_Final(unsigned char *digest, SHA256_CTX *ctx)
{
  memcpy(digest, gcry_md_read(*ctx, 0), SHA256_DIGEST_LENGTH);
  gcry_md_close(*ctx);
}

#elif defined(USE_MBEDTLS)

#include <mbedtls/sha256.h>

#include "curl_memory.h"

/* The last #include file should be: */







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







88
89
90
91
92
93
94





























95
96
97
98
99
100
101
}

static void SHA256_Final(unsigned char *digest, SHA256_CTX *ctx)
{
  sha256_digest(ctx, SHA256_DIGEST_SIZE, digest);
}






























#elif defined(USE_MBEDTLS)

#include <mbedtls/sha256.h>

#include "curl_memory.h"

/* The last #include file should be: */
Changes to jni/curl/lib/smb.c.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) &&  \
  (CURL_SIZEOF_CURL_OFF_T > 4)

#define BUILDING_CURL_SMB_C

#ifdef HAVE_PROCESS_H
#include <process.h>
#ifdef CURL_WINDOWS_APP
#define getpid GetCurrentProcessId







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) &&  \
  (SIZEOF_CURL_OFF_T > 4)

#define BUILDING_CURL_SMB_C

#ifdef HAVE_PROCESS_H
#include <process.h>
#ifdef CURL_WINDOWS_APP
#define getpid GetCurrentProcessId
1018
1019
1020
1021
1022
1023
1024
1025
    if(*slash == '/')
      *slash = '\\';
  }
  return CURLE_OK;
}

#endif /* CURL_DISABLE_SMB && USE_CURL_NTLM_CORE &&
          CURL_SIZEOF_CURL_OFF_T > 4 */







|
1018
1019
1020
1021
1022
1023
1024
1025
    if(*slash == '/')
      *slash = '\\';
  }
  return CURLE_OK;
}

#endif /* CURL_DISABLE_SMB && USE_CURL_NTLM_CORE &&
          SIZEOF_CURL_OFF_T > 4 */
Changes to jni/curl/lib/smb.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef HEADER_CURL_SMB_H
#define HEADER_CURL_SMB_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
 * Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef HEADER_CURL_SMB_H
#define HEADER_CURL_SMB_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
 * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
#if defined(_MSC_VER) || defined(__ILEC400__)
#  pragma pack(pop)
#endif

#endif /* BUILDING_CURL_SMB_C */

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \
    (CURL_SIZEOF_CURL_OFF_T > 4)

extern const struct Curl_handler Curl_handler_smb;
extern const struct Curl_handler Curl_handler_smbs;

#endif /* CURL_DISABLE_SMB && USE_CURL_NTLM_CORE &&
          CURL_SIZEOF_CURL_OFF_T > 4 */

#endif /* HEADER_CURL_SMB_H */







|





|


240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
#if defined(_MSC_VER) || defined(__ILEC400__)
#  pragma pack(pop)
#endif

#endif /* BUILDING_CURL_SMB_C */

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \
    (SIZEOF_CURL_OFF_T > 4)

extern const struct Curl_handler Curl_handler_smb;
extern const struct Curl_handler Curl_handler_smbs;

#endif /* CURL_DISABLE_SMB && USE_CURL_NTLM_CORE &&
          SIZEOF_CURL_OFF_T > 4 */

#endif /* HEADER_CURL_SMB_H */
Changes to jni/curl/lib/smtp.c.
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
    state(data, SMTP_POSTDATA);

    /* Run the state-machine */
    result = smtp_block_statemach(data, conn, FALSE);
  }

  /* Clear the transfer mode for the next request */
  smtp->transfer = FTPTRANSFER_BODY;

  return result;
}

/***********************************************************************
 *
 * smtp_perform()







|







1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
    state(data, SMTP_POSTDATA);

    /* Run the state-machine */
    result = smtp_block_statemach(data, conn, FALSE);
  }

  /* Clear the transfer mode for the next request */
  smtp->transfer = PPTRANSFER_BODY;

  return result;
}

/***********************************************************************
 *
 * smtp_perform()
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
  struct connectdata *conn = data->conn;
  struct SMTP *smtp = data->req.p.smtp;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* Requested no body means no transfer */
    smtp->transfer = FTPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* Store the first recipient (or NULL if not specified) */
  smtp->rcpt = data->set.mail_rcpt;








|







1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
  struct connectdata *conn = data->conn;
  struct SMTP *smtp = data->req.p.smtp;

  DEBUGF(infof(data, "DO phase starts\n"));

  if(data->set.opt_no_body) {
    /* Requested no body means no transfer */
    smtp->transfer = PPTRANSFER_INFO;
  }

  *dophase_done = FALSE; /* not done yet */

  /* Store the first recipient (or NULL if not specified) */
  smtp->rcpt = data->set.mail_rcpt;

1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
/* Call this when the DO phase has completed */
static CURLcode smtp_dophase_done(struct Curl_easy *data, bool connected)
{
  struct SMTP *smtp = data->req.p.smtp;

  (void)connected;

  if(smtp->transfer != FTPTRANSFER_BODY)
    /* no data to transfer */
    Curl_setup_transfer(data, -1, -1, FALSE, -1);

  return CURLE_OK;
}

/* Called from multi.c while DOing */







|







1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
/* Call this when the DO phase has completed */
static CURLcode smtp_dophase_done(struct Curl_easy *data, bool connected)
{
  struct SMTP *smtp = data->req.p.smtp;

  (void)connected;

  if(smtp->transfer != PPTRANSFER_BODY)
    /* no data to transfer */
    Curl_setup_transfer(data, -1, -1, FALSE, -1);

  return CURLE_OK;
}

/* Called from multi.c while DOing */
Changes to jni/curl/lib/socketpair.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SOCKETPAIR_H
#define HEADER_CURL_SOCKETPAIR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SOCKETPAIR_H
#define HEADER_CURL_SOCKETPAIR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
26
27
28
29
30
31
32
33
34
35
36
#ifndef HAVE_SOCKETPAIR
int Curl_socketpair(int domain, int type, int protocol,
                    curl_socket_t socks[2]);
#else
#define Curl_socketpair(a,b,c,d) socketpair(a,b,c,d)
#endif

/* Defined here to allow specific build configs to disable it completely */
#define USE_SOCKETPAIR 1

#endif /* HEADER_CURL_SOCKETPAIR_H */







<
<
<

26
27
28
29
30
31
32



33
#ifndef HAVE_SOCKETPAIR
int Curl_socketpair(int domain, int type, int protocol,
                    curl_socket_t socks[2]);
#else
#define Curl_socketpair(a,b,c,d) socketpair(a,b,c,d)
#endif




#endif /* HEADER_CURL_SOCKETPAIR_H */
Changes to jni/curl/lib/tftp.c.
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
  tftp_error_t    error;
  tftp_event_t    event;
  struct Curl_easy *data;
  curl_socket_t   sockfd;
  int             retries;
  int             retry_time;
  int             retry_max;
  time_t          start_time;
  time_t          max_time;
  time_t          rx_time;
  struct Curl_sockaddr_storage   local_addr;
  struct Curl_sockaddr_storage   remote_addr;
  curl_socklen_t  remote_addrlen;
  int             rbytes;
  int             sbytes;
  int             blksize;







<
<







125
126
127
128
129
130
131


132
133
134
135
136
137
138
  tftp_error_t    error;
  tftp_event_t    event;
  struct Curl_easy *data;
  curl_socket_t   sockfd;
  int             retries;
  int             retry_time;
  int             retry_max;


  time_t          rx_time;
  struct Curl_sockaddr_storage   local_addr;
  struct Curl_sockaddr_storage   remote_addr;
  curl_socklen_t  remote_addrlen;
  int             rbytes;
  int             sbytes;
  int             blksize;
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
 **********************************************************/
static CURLcode tftp_set_timeouts(struct tftp_state_data *state)
{
  time_t maxtime, timeout;
  timediff_t timeout_ms;
  bool start = (state->state == TFTP_STATE_START) ? TRUE : FALSE;

  time(&state->start_time);

  /* Compute drop-dead time */
  timeout_ms = Curl_timeleft(state->data, NULL, start);

  if(timeout_ms < 0) {
    /* time-out, bail out, go home */
    failf(state->data, "Connection time-out");
    return CURLE_OPERATION_TIMEDOUT;
  }

  if(start) {

    maxtime = (time_t)(timeout_ms + 500) / 1000;
    state->max_time = state->start_time + maxtime;

    /* Set per-block timeout to total */
    timeout = maxtime;

    /* Average restart after 5 seconds */
    state->retry_max = (int)timeout/5;

    if(state->retry_max < 1)
      /* avoid division by zero below */
      state->retry_max = 1;

    /* Compute the re-start interval to suit the timeout */
    state->retry_time = (int)timeout/state->retry_max;
    if(state->retry_time<1)
      state->retry_time = 1;

  }
  else {
    if(timeout_ms > 0)
      maxtime = (time_t)(timeout_ms + 500) / 1000;
    else
      maxtime = 3600;

    state->max_time = state->start_time + maxtime;

    /* Set per-block timeout to total */
    timeout = maxtime;

    /* Average reposting an ACK after 5 seconds */
    state->retry_max = (int)timeout/5;
  }
  /* But bound the total number */
  if(state->retry_max<3)
    state->retry_max = 3;

  if(state->retry_max>50)
    state->retry_max = 50;

  /* Compute the re-ACK interval to suit the timeout */
  state->retry_time = (int)(timeout/state->retry_max);
  if(state->retry_time<1)
    state->retry_time = 1;

  infof(state->data,
        "set timeouts for state %d; Total %ld, retry %d maxtry %d\n",
        (int)state->state, (long)(state->max_time-state->start_time),
        state->retry_time, state->retry_max);

  /* init RX time */
  time(&state->rx_time);

  return CURLE_OK;
}








<
<









<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|
|
|

<
<
|
|

|
|
|













|
|
|







200
201
202
203
204
205
206


207
208
209
210
211
212
213
214
215






















216
217
218
219
220


221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
 **********************************************************/
static CURLcode tftp_set_timeouts(struct tftp_state_data *state)
{
  time_t maxtime, timeout;
  timediff_t timeout_ms;
  bool start = (state->state == TFTP_STATE_START) ? TRUE : FALSE;



  /* Compute drop-dead time */
  timeout_ms = Curl_timeleft(state->data, NULL, start);

  if(timeout_ms < 0) {
    /* time-out, bail out, go home */
    failf(state->data, "Connection time-out");
    return CURLE_OPERATION_TIMEDOUT;
  }























  if(timeout_ms > 0)
    maxtime = (time_t)(timeout_ms + 500) / 1000;
  else
    maxtime = 3600; /* use for calculating block timeouts */



  /* Set per-block timeout to total */
  timeout = maxtime;

  /* Average reposting an ACK after 5 seconds */
  state->retry_max = (int)timeout/5;

  /* But bound the total number */
  if(state->retry_max<3)
    state->retry_max = 3;

  if(state->retry_max>50)
    state->retry_max = 50;

  /* Compute the re-ACK interval to suit the timeout */
  state->retry_time = (int)(timeout/state->retry_max);
  if(state->retry_time<1)
    state->retry_time = 1;

  infof(state->data,
        "set timeouts for state %d; Total % " CURL_FORMAT_CURL_OFF_T
        ", retry %d maxtry %d\n",
        (int)state->state, timeout_ms, state->retry_time, state->retry_max);

  /* init RX time */
  time(&state->rx_time);

  return CURLE_OK;
}

456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
  ssize_t senddata;
  const char *mode = "octet";
  char *filename;
  struct Curl_easy *data = state->data;
  CURLcode result = CURLE_OK;

  /* Set ascii mode if -B flag was used */
  if(data->set.prefer_ascii)
    mode = "netascii";

  switch(event) {

  case TFTP_EVENT_INIT:    /* Send the first packet out */
  case TFTP_EVENT_TIMEOUT: /* Resend the first packet out */
    /* Increment the retry counter, quit if over the limit */







|







428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
  ssize_t senddata;
  const char *mode = "octet";
  char *filename;
  struct Curl_easy *data = state->data;
  CURLcode result = CURLE_OK;

  /* Set ascii mode if -B flag was used */
  if(data->state.prefer_ascii)
    mode = "netascii";

  switch(event) {

  case TFTP_EVENT_INIT:    /* Send the first packet out */
  case TFTP_EVENT_TIMEOUT: /* Resend the first packet out */
    /* Increment the retry counter, quit if over the limit */
1211
1212
1213
1214
1215
1216
1217
1218

1219
1220
1221
1222

1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234

1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
/**********************************************************
 *
 * tftp_state_timeout
 *
 * Check if timeouts have been reached
 *
 **********************************************************/
static long tftp_state_timeout(struct Curl_easy *data, tftp_event_t *event)

{
  time_t current;
  struct connectdata *conn = data->conn;
  struct tftp_state_data *state = conn->proto.tftpc;


  if(event)
    *event = TFTP_EVENT_NONE;

  time(&current);
  if(current > state->max_time) {
    DEBUGF(infof(data, "timeout: %ld > %ld\n",
                 (long)current, (long)state->max_time));
    state->error = TFTP_ERR_TIMEOUT;
    state->state = TFTP_STATE_FIN;
    return 0;
  }

  if(current > state->rx_time + state->retry_time) {
    if(event)
      *event = TFTP_EVENT_TIMEOUT;
    time(&state->rx_time); /* update even though we received nothing */
  }

  /* there's a typecast below here since 'time_t' may in fact be larger than
     'long', but we estimate that a 'long' will still be able to hold number
     of seconds even if "only" 32 bit */
  return (long)(state->max_time - current);
}

/**********************************************************
 *
 * tftp_multi_statemach
 *
 * Handle single RX socket event and return
 *
 **********************************************************/
static CURLcode tftp_multi_statemach(struct Curl_easy *data, bool *done)
{
  tftp_event_t event;
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct tftp_state_data *state = conn->proto.tftpc;
  long timeout_ms = tftp_state_timeout(data, &event);

  *done = FALSE;

  if(timeout_ms <= 0) {
    failf(data, "TFTP response timeout");
    return CURLE_OPERATION_TIMEDOUT;
  }
  if(event != TFTP_EVENT_NONE) {
    result = tftp_state_machine(state, event);
    if(result)
      return result;







|
>




>




|
|
|
<




>






<
<
<
|















|



|







1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203

1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214



1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
/**********************************************************
 *
 * tftp_state_timeout
 *
 * Check if timeouts have been reached
 *
 **********************************************************/
static timediff_t tftp_state_timeout(struct Curl_easy *data,
                                     tftp_event_t *event)
{
  time_t current;
  struct connectdata *conn = data->conn;
  struct tftp_state_data *state = conn->proto.tftpc;
  timediff_t timeout_ms;

  if(event)
    *event = TFTP_EVENT_NONE;

  timeout_ms = Curl_timeleft(state->data, NULL,
                             (state->state == TFTP_STATE_START));
  if(timeout_ms < 0) {

    state->error = TFTP_ERR_TIMEOUT;
    state->state = TFTP_STATE_FIN;
    return 0;
  }
  time(&current);
  if(current > state->rx_time + state->retry_time) {
    if(event)
      *event = TFTP_EVENT_TIMEOUT;
    time(&state->rx_time); /* update even though we received nothing */
  }




  return timeout_ms;
}

/**********************************************************
 *
 * tftp_multi_statemach
 *
 * Handle single RX socket event and return
 *
 **********************************************************/
static CURLcode tftp_multi_statemach(struct Curl_easy *data, bool *done)
{
  tftp_event_t event;
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct tftp_state_data *state = conn->proto.tftpc;
  timediff_t timeout_ms = tftp_state_timeout(data, &event);

  *done = FALSE;

  if(timeout_ms < 0) {
    failf(data, "TFTP response timeout");
    return CURLE_OPERATION_TIMEDOUT;
  }
  if(event != TFTP_EVENT_NONE) {
    result = tftp_state_machine(state, event);
    if(result)
      return result;
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
    char command;
    *type = 0;                   /* it was in the middle of the hostname */
    command = Curl_raw_toupper(type[6]);

    switch(command) {
    case 'A': /* ASCII mode */
    case 'N': /* NETASCII mode */
      data->set.prefer_ascii = TRUE;
      break;

    case 'O': /* octet mode */
    case 'I': /* binary mode */
    default:
      /* switch off ASCII */
      data->set.prefer_ascii = FALSE;
      break;
    }
  }

  return CURLE_OK;
}
#endif







|






|







1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
    char command;
    *type = 0;                   /* it was in the middle of the hostname */
    command = Curl_raw_toupper(type[6]);

    switch(command) {
    case 'A': /* ASCII mode */
    case 'N': /* NETASCII mode */
      data->state.prefer_ascii = TRUE;
      break;

    case 'O': /* octet mode */
    case 'I': /* binary mode */
    default:
      /* switch off ASCII */
      data->state.prefer_ascii = FALSE;
      break;
    }
  }

  return CURLE_OK;
}
#endif
Changes to jni/curl/lib/transfer.c.
75
76
77
78
79
80
81

82
83
84
85
86
87
88
#include "connect.h"
#include "non-ascii.h"
#include "http2.h"
#include "mime.h"
#include "strcase.h"
#include "urlapi-int.h"
#include "hsts.h"


/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_SMTP) || \







>







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "connect.h"
#include "non-ascii.h"
#include "http2.h"
#include "mime.h"
#include "strcase.h"
#include "urlapi-int.h"
#include "hsts.h"
#include "setopt.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_SMTP) || \
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
    /* if chunked Transfer-Encoding
     *    build chunk:
     *
     *        <HEX SIZE> CRLF
     *        <DATA> CRLF
     */
    /* On non-ASCII platforms the <DATA> may or may not be
       translated based on set.prefer_ascii while the protocol
       portion must always be translated to the network encoding.
       To further complicate matters, line end conversion might be
       done later on, so we need to prevent CRLFs from becoming
       CRCRLFs if that's the case.  To do this we use bare LFs
       here, knowing they'll become CRLFs later on.
     */

    bool added_crlf = FALSE;
    int hexlen = 0;
    const char *endofline_native;
    const char *endofline_network;

    if(
#ifdef CURL_DO_LINEEND_CONV
       (data->set.prefer_ascii) ||
#endif
       (data->set.crlf)) {
      /* \n will become \r\n later on */
      endofline_native  = "\n";
      endofline_network = "\x0a";
    }
    else {







|














|







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
    /* if chunked Transfer-Encoding
     *    build chunk:
     *
     *        <HEX SIZE> CRLF
     *        <DATA> CRLF
     */
    /* On non-ASCII platforms the <DATA> may or may not be
       translated based on state.prefer_ascii while the protocol
       portion must always be translated to the network encoding.
       To further complicate matters, line end conversion might be
       done later on, so we need to prevent CRLFs from becoming
       CRCRLFs if that's the case.  To do this we use bare LFs
       here, knowing they'll become CRLFs later on.
     */

    bool added_crlf = FALSE;
    int hexlen = 0;
    const char *endofline_native;
    const char *endofline_network;

    if(
#ifdef CURL_DO_LINEEND_CONV
       (data->state.prefer_ascii) ||
#endif
       (data->set.crlf)) {
      /* \n will become \r\n later on */
      endofline_native  = "\n";
      endofline_network = "\x0a";
    }
    else {
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
      }
    }

#ifdef CURL_DOES_CONVERSIONS
    {
      CURLcode result;
      size_t length;
      if(data->set.prefer_ascii)
        /* translate the protocol and data */
        length = nread;
      else
        /* just translate the protocol portion */
        length = hexlen;
      if(length) {
        result = Curl_convert_to_network(data, data->req.upload_fromhere,







|







345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
      }
    }

#ifdef CURL_DOES_CONVERSIONS
    {
      CURLcode result;
      size_t length;
      if(data->state.prefer_ascii)
        /* translate the protocol and data */
        length = nread;
      else
        /* just translate the protocol portion */
        length = hexlen;
      if(length) {
        result = Curl_convert_to_network(data, data->req.upload_fromhere,
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
              "Signaling end of chunked upload via terminating chunk.\n");
      }

    if(added_crlf)
      nread += strlen(endofline_network); /* for the added end of line */
  }
#ifdef CURL_DOES_CONVERSIONS
  else if((data->set.prefer_ascii) && (!sending_http_headers)) {
    CURLcode result;
    result = Curl_convert_to_network(data, data->req.upload_fromhere, nread);
    /* Curl_convert_to_network calls failf if unsuccessful */
    if(result)
      return result;
  }
#endif /* CURL_DOES_CONVERSIONS */







|







386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
              "Signaling end of chunked upload via terminating chunk.\n");
      }

    if(added_crlf)
      nread += strlen(endofline_network); /* for the added end of line */
  }
#ifdef CURL_DOES_CONVERSIONS
  else if((data->state.prefer_ascii) && (!sending_http_headers)) {
    CURLcode result;
    result = Curl_convert_to_network(data, data->req.upload_fromhere, nread);
    /* Curl_convert_to_network calls failf if unsuccessful */
    if(result)
      return result;
  }
#endif /* CURL_DOES_CONVERSIONS */
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
      /* store number of bytes available for upload */
      k->upload_present = nread;

      /* convert LF to CRLF if so asked */
      if((!sending_http_headers) && (
#ifdef CURL_DO_LINEEND_CONV
         /* always convert if we're FTPing in ASCII mode */
         (data->set.prefer_ascii) ||
#endif
         (data->set.crlf))) {
        /* Do we need to allocate a scratch buffer? */
        if(!data->state.scratch) {
          data->state.scratch = malloc(2 * data->set.upload_buffer_size);
          if(!data->state.scratch) {
            failf(data, "Failed to alloc scratch buffer!");







|







1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
      /* store number of bytes available for upload */
      k->upload_present = nread;

      /* convert LF to CRLF if so asked */
      if((!sending_http_headers) && (
#ifdef CURL_DO_LINEEND_CONV
         /* always convert if we're FTPing in ASCII mode */
         (data->state.prefer_ascii) ||
#endif
         (data->set.crlf))) {
        /* Do we need to allocate a scratch buffer? */
        if(!data->state.scratch) {
          data->state.scratch = malloc(2 * data->set.upload_buffer_size);
          if(!data->state.scratch) {
            failf(data, "Failed to alloc scratch buffer!");
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417


1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431

1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
 * once for one transfer no matter if it has redirects or do multi-pass
 * authentication etc.
 */
CURLcode Curl_pretransfer(struct Curl_easy *data)
{
  CURLcode result;

  if(!data->change.url && !data->set.uh) {
    /* we can't do anything without URL */
    failf(data, "No URL set!");
    return CURLE_URL_MALFORMAT;
  }

  /* since the URL may have been redirected in a previous use of this handle */
  if(data->change.url_alloc) {
    /* the already set URL is allocated, free it first! */
    Curl_safefree(data->change.url);
    data->change.url_alloc = FALSE;
  }

  if(!data->change.url && data->set.uh) {
    CURLUcode uc;
    free(data->set.str[STRING_SET_URL]);
    uc = curl_url_get(data->set.uh,
                      CURLUPART_URL, &data->set.str[STRING_SET_URL], 0);
    if(uc) {
      failf(data, "No URL set!");
      return CURLE_URL_MALFORMAT;
    }
  }



  data->state.httpreq = data->set.method;
  data->change.url = data->set.str[STRING_SET_URL];

  /* Init the SSL session ID cache here. We do it here since we want to do it
     after the *_setopt() calls (that could specify the size of the cache) but
     before any transfer takes place. */
  result = Curl_ssl_initsessions(data, data->set.general_ssl.max_ssl_sessions);
  if(result)
    return result;

  data->state.wildcardmatch = data->set.wildcard_enabled;
  data->set.followlocation = 0; /* reset the location-follow counter */
  data->state.this_is_a_follow = FALSE; /* reset this */
  data->state.errorbuf = FALSE; /* no error has occurred */

  data->state.httpversion = 0; /* don't assume any particular server version */

  data->state.authproblem = FALSE;
  data->state.authhost.want = data->set.httpauth;
  data->state.authproxy.want = data->set.proxyauth;
  Curl_safefree(data->info.wouldredirect);

  if(data->state.httpreq == HTTPREQ_PUT)
    data->state.infilesize = data->set.filesize;
  else if((data->state.httpreq != HTTPREQ_GET) &&
          (data->state.httpreq != HTTPREQ_HEAD)) {
    data->state.infilesize = data->set.postfieldsize;
    if(data->set.postfields && (data->state.infilesize == -1))
      data->state.infilesize = (curl_off_t)strlen(data->set.postfields);
  }
  else
    data->state.infilesize = 0;

  /* If there is a list of cookie files to read, do it now! */
  if(data->change.cookielist)
    Curl_cookie_loadfiles(data);

  /* If there is a list of host pairs to deal with */
  if(data->change.resolve)
    result = Curl_loadhostpairs(data);

  if(!result) {
    /* Allow data->set.use_port to set which port to use. This needs to be
     * disabled for example when we follow Location: headers to URLs using
     * different ports! */
    data->state.allow_port = TRUE;







|






|

|
|


|










>
>

|









|


>
|
<

















|



|







1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436

1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
 * once for one transfer no matter if it has redirects or do multi-pass
 * authentication etc.
 */
CURLcode Curl_pretransfer(struct Curl_easy *data)
{
  CURLcode result;

  if(!data->state.url && !data->set.uh) {
    /* we can't do anything without URL */
    failf(data, "No URL set!");
    return CURLE_URL_MALFORMAT;
  }

  /* since the URL may have been redirected in a previous use of this handle */
  if(data->state.url_alloc) {
    /* the already set URL is allocated, free it first! */
    Curl_safefree(data->state.url);
    data->state.url_alloc = FALSE;
  }

  if(!data->state.url && data->set.uh) {
    CURLUcode uc;
    free(data->set.str[STRING_SET_URL]);
    uc = curl_url_get(data->set.uh,
                      CURLUPART_URL, &data->set.str[STRING_SET_URL], 0);
    if(uc) {
      failf(data, "No URL set!");
      return CURLE_URL_MALFORMAT;
    }
  }

  data->state.prefer_ascii = data->set.prefer_ascii;
  data->state.list_only = data->set.list_only;
  data->state.httpreq = data->set.method;
  data->state.url = data->set.str[STRING_SET_URL];

  /* Init the SSL session ID cache here. We do it here since we want to do it
     after the *_setopt() calls (that could specify the size of the cache) but
     before any transfer takes place. */
  result = Curl_ssl_initsessions(data, data->set.general_ssl.max_ssl_sessions);
  if(result)
    return result;

  data->state.wildcardmatch = data->set.wildcard_enabled;
  data->state.followlocation = 0; /* reset the location-follow counter */
  data->state.this_is_a_follow = FALSE; /* reset this */
  data->state.errorbuf = FALSE; /* no error has occurred */
  data->state.httpwant = data->set.httpwant;
  data->state.httpversion = 0;

  data->state.authproblem = FALSE;
  data->state.authhost.want = data->set.httpauth;
  data->state.authproxy.want = data->set.proxyauth;
  Curl_safefree(data->info.wouldredirect);

  if(data->state.httpreq == HTTPREQ_PUT)
    data->state.infilesize = data->set.filesize;
  else if((data->state.httpreq != HTTPREQ_GET) &&
          (data->state.httpreq != HTTPREQ_HEAD)) {
    data->state.infilesize = data->set.postfieldsize;
    if(data->set.postfields && (data->state.infilesize == -1))
      data->state.infilesize = (curl_off_t)strlen(data->set.postfields);
  }
  else
    data->state.infilesize = 0;

  /* If there is a list of cookie files to read, do it now! */
  if(data->state.cookielist)
    Curl_cookie_loadfiles(data);

  /* If there is a list of host pairs to deal with */
  if(data->state.resolve)
    result = Curl_loadhostpairs(data);

  if(!result) {
    /* Allow data->set.use_port to set which port to use. This needs to be
     * disabled for example when we follow Location: headers to URLs using
     * different ports! */
    data->state.allow_port = TRUE;
1502
1503
1504
1505
1506
1507
1508













1509
1510
1511
1512
1513
1514
1515
    Curl_safefree(data->state.aptr.uagent);
    data->state.aptr.uagent =
      aprintf("User-Agent: %s\r\n", data->set.str[STRING_USERAGENT]);
    if(!data->state.aptr.uagent)
      return CURLE_OUT_OF_MEMORY;
  }














  data->req.headerbytecount = 0;
  return result;
}

/*
 * Curl_posttransfer() is called immediately after a transfer ends
 */







>
>
>
>
>
>
>
>
>
>
>
>
>







1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
    Curl_safefree(data->state.aptr.uagent);
    data->state.aptr.uagent =
      aprintf("User-Agent: %s\r\n", data->set.str[STRING_USERAGENT]);
    if(!data->state.aptr.uagent)
      return CURLE_OUT_OF_MEMORY;
  }

  if(!result)
    result = Curl_setstropt(&data->state.aptr.user,
                            data->set.str[STRING_USERNAME]);
  if(!result)
    result = Curl_setstropt(&data->state.aptr.passwd,
                            data->set.str[STRING_PASSWORD]);
  if(!result)
    result = Curl_setstropt(&data->state.aptr.proxyuser,
                            data->set.str[STRING_PROXYUSERNAME]);
  if(!result)
    result = Curl_setstropt(&data->state.aptr.proxypasswd,
                            data->set.str[STRING_PROXYPASSWORD]);

  data->req.headerbytecount = 0;
  return result;
}

/*
 * Curl_posttransfer() is called immediately after a transfer ends
 */
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567



1568
1569
1570
1571
1572
1573
1574
1575
1576




1577












1578
1579


1580
1581
1582
1583
1584
1585
1586
1587
  bool reachedmax = FALSE;
  CURLUcode uc;

  DEBUGASSERT(type != FOLLOW_NONE);

  if(type == FOLLOW_REDIR) {
    if((data->set.maxredirs != -1) &&
       (data->set.followlocation >= data->set.maxredirs)) {
      reachedmax = TRUE;
      type = FOLLOW_FAKE; /* switch to fake to store the would-be-redirected
                             to URL */
    }
    else {
      /* mark the next request as a followed location: */
      data->state.this_is_a_follow = TRUE;

      data->set.followlocation++; /* count location-followers */

      if(data->set.http_auto_referer) {



        /* We are asked to automatically set the previous URL as the referer
           when we get the next URL. We pick the ->url field, which may or may
           not be 100% correct */

        if(data->change.referer_alloc) {
          Curl_safefree(data->change.referer);
          data->change.referer_alloc = FALSE;
        }





        data->change.referer = strdup(data->change.url);












        if(!data->change.referer)
          return CURLE_OUT_OF_MEMORY;


        data->change.referer_alloc = TRUE; /* yes, free this later */
      }
    }
  }

  if((type != FOLLOW_RETRY) &&
     (data->req.httpcode != 401) && (data->req.httpcode != 407) &&
     Curl_is_absolute_url(newurl, NULL, MAX_SCHEME_LEN))







|








|


>
>
>




|
|
|


>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
|

>
>
|







1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
  bool reachedmax = FALSE;
  CURLUcode uc;

  DEBUGASSERT(type != FOLLOW_NONE);

  if(type == FOLLOW_REDIR) {
    if((data->set.maxredirs != -1) &&
       (data->state.followlocation >= data->set.maxredirs)) {
      reachedmax = TRUE;
      type = FOLLOW_FAKE; /* switch to fake to store the would-be-redirected
                             to URL */
    }
    else {
      /* mark the next request as a followed location: */
      data->state.this_is_a_follow = TRUE;

      data->state.followlocation++; /* count location-followers */

      if(data->set.http_auto_referer) {
        CURLU *u;
        char *referer = NULL;

        /* We are asked to automatically set the previous URL as the referer
           when we get the next URL. We pick the ->url field, which may or may
           not be 100% correct */

        if(data->state.referer_alloc) {
          Curl_safefree(data->state.referer);
          data->state.referer_alloc = FALSE;
        }

        /* Make a copy of the URL without crenditals and fragment */
        u = curl_url();
        if(!u)
          return CURLE_OUT_OF_MEMORY;

        uc = curl_url_set(u, CURLUPART_URL, data->state.url, 0);
        if(!uc)
          uc = curl_url_set(u, CURLUPART_FRAGMENT, NULL, 0);
        if(!uc)
          uc = curl_url_set(u, CURLUPART_USER, NULL, 0);
        if(!uc)
          uc = curl_url_set(u, CURLUPART_PASSWORD, NULL, 0);
        if(!uc)
          uc = curl_url_get(u, CURLUPART_URL, &referer, 0);

        curl_url_cleanup(u);

        if(uc || !referer)
          return CURLE_OUT_OF_MEMORY;

        data->state.referer = referer;
        data->state.referer_alloc = TRUE; /* yes, free this later */
      }
    }
  }

  if((type != FOLLOW_RETRY) &&
     (data->req.httpcode != 401) && (data->req.httpcode != 407) &&
     Curl_is_absolute_url(newurl, NULL, MAX_SCHEME_LEN))
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
    }
    return CURLE_OK;
  }

  if(disallowport)
    data->state.allow_port = FALSE;

  if(data->change.url_alloc)
    Curl_safefree(data->change.url);

  data->change.url = newurl;
  data->change.url_alloc = TRUE;

  infof(data, "Issue another request to this URL: '%s'\n", data->change.url);

  /*
   * We get here when the HTTP code is 300-399 (and 401). We need to perform
   * differently based on exactly what return code there was.
   *
   * News from 7.10.6: we can also get here on a 401 or 407, in case we act on
   * a HTTP (proxy-) authentication scheme other than Basic.







|
|

|
|

|







1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
    }
    return CURLE_OK;
  }

  if(disallowport)
    data->state.allow_port = FALSE;

  if(data->state.url_alloc)
    Curl_safefree(data->state.url);

  data->state.url = newurl;
  data->state.url_alloc = TRUE;

  infof(data, "Issue another request to this URL: '%s'\n", data->state.url);

  /*
   * We get here when the HTTP code is 300-399 (and 401). We need to perform
   * differently based on exactly what return code there was.
   *
   * News from 7.10.6: we can also get here on a 401 or 407, in case we act on
   * a HTTP (proxy-) authentication scheme other than Basic.
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
      failf(data, "Connection died, tried %d times before giving up",
            CONN_MAX_RETRIES);
      data->state.retrycount = 0;
      return CURLE_SEND_ERROR;
    }
    infof(data, "Connection died, retrying a fresh connect\
(retry count: %d)\n", data->state.retrycount);
    *url = strdup(data->change.url);
    if(!*url)
      return CURLE_OUT_OF_MEMORY;

    connclose(conn, "retry"); /* close this connection */
    conn->bits.retry = TRUE; /* mark this as a connection we're about
                                to retry. Marking it this way should
                                prevent i.e HTTP transfers to return







|







1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
      failf(data, "Connection died, tried %d times before giving up",
            CONN_MAX_RETRIES);
      data->state.retrycount = 0;
      return CURLE_SEND_ERROR;
    }
    infof(data, "Connection died, retrying a fresh connect\
(retry count: %d)\n", data->state.retrycount);
    *url = strdup(data->state.url);
    if(!*url)
      return CURLE_OUT_OF_MEMORY;

    connclose(conn, "retry"); /* close this connection */
    conn->bits.retry = TRUE; /* mark this as a connection we're about
                                to retry. Marking it this way should
                                prevent i.e HTTP transfers to return
Changes to jni/curl/lib/url.c.
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
  &Curl_handler_pop3,
#ifdef USE_SSL
  &Curl_handler_pop3s,
#endif
#endif

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \
   (CURL_SIZEOF_CURL_OFF_T > 4)
  &Curl_handler_smb,
#ifdef USE_SSL
  &Curl_handler_smbs,
#endif
#endif

#ifndef CURL_DISABLE_RTSP







|







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
  &Curl_handler_pop3,
#ifdef USE_SSL
  &Curl_handler_pop3s,
#endif
#endif

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \
   (SIZEOF_CURL_OFF_T > 4)
  &Curl_handler_smb,
#ifdef USE_SSL
  &Curl_handler_smbs,
#endif
#endif

#ifndef CURL_DISABLE_RTSP
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
    Curl_safefree(data->set.str[i]);
  }

  for(j = (enum dupblob)0; j < BLOB_LAST; j++) {
    Curl_safefree(data->set.blobs[j]);
  }

  if(data->change.referer_alloc) {
    Curl_safefree(data->change.referer);
    data->change.referer_alloc = FALSE;
  }
  data->change.referer = NULL;
  if(data->change.url_alloc) {
    Curl_safefree(data->change.url);
    data->change.url_alloc = FALSE;
  }
  data->change.url = NULL;

  Curl_mime_cleanpart(&data->set.mimepost);
}

/* free the URL pieces */
static void up_free(struct Curl_easy *data)
{







|
|
|

|
|
|
|

|







308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
    Curl_safefree(data->set.str[i]);
  }

  for(j = (enum dupblob)0; j < BLOB_LAST; j++) {
    Curl_safefree(data->set.blobs[j]);
  }

  if(data->state.referer_alloc) {
    Curl_safefree(data->state.referer);
    data->state.referer_alloc = FALSE;
  }
  data->state.referer = NULL;
  if(data->state.url_alloc) {
    Curl_safefree(data->state.url);
    data->state.url_alloc = FALSE;
  }
  data->state.url = NULL;

  Curl_mime_cleanpart(&data->set.mimepost);
}

/* free the URL pieces */
static void up_free(struct Curl_easy *data)
{
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
  Curl_safefree(data->state.scratch);
  Curl_ssl_free_certinfo(data);

  /* Cleanup possible redirect junk */
  free(data->req.newurl);
  data->req.newurl = NULL;

  if(data->change.referer_alloc) {
    Curl_safefree(data->change.referer);
    data->change.referer_alloc = FALSE;
  }
  data->change.referer = NULL;

  up_free(data);
  Curl_safefree(data->state.buffer);
  Curl_dyn_free(&data->state.headerb);
  Curl_safefree(data->state.ulbuf);
  Curl_flush_cookies(data, TRUE);
  Curl_altsvc_save(data, data->asi, data->set.str[STRING_ALTSVC]);







|
|
|

|







401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
  Curl_safefree(data->state.scratch);
  Curl_ssl_free_certinfo(data);

  /* Cleanup possible redirect junk */
  free(data->req.newurl);
  data->req.newurl = NULL;

  if(data->state.referer_alloc) {
    Curl_safefree(data->state.referer);
    data->state.referer_alloc = FALSE;
  }
  data->state.referer = NULL;

  up_free(data);
  Curl_safefree(data->state.buffer);
  Curl_dyn_free(&data->state.headerb);
  Curl_safefree(data->state.ulbuf);
  Curl_flush_cookies(data, TRUE);
  Curl_altsvc_save(data, data->asi, data->set.str[STRING_ALTSVC]);
445
446
447
448
449
450
451




452
453
454
455
456
457
458
  Curl_safefree(data->state.aptr.accept_encoding);
  Curl_safefree(data->state.aptr.te);
  Curl_safefree(data->state.aptr.rangeline);
  Curl_safefree(data->state.aptr.ref);
  Curl_safefree(data->state.aptr.host);
  Curl_safefree(data->state.aptr.cookiehost);
  Curl_safefree(data->state.aptr.rtsp_transport);





#ifndef CURL_DISABLE_DOH
  if(data->req.doh) {
    Curl_dyn_free(&data->req.doh->probe[0].serverdoh);
    Curl_dyn_free(&data->req.doh->probe[1].serverdoh);
    curl_slist_free_all(data->req.doh->headers);
    Curl_safefree(data->req.doh);







>
>
>
>







445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
  Curl_safefree(data->state.aptr.accept_encoding);
  Curl_safefree(data->state.aptr.te);
  Curl_safefree(data->state.aptr.rangeline);
  Curl_safefree(data->state.aptr.ref);
  Curl_safefree(data->state.aptr.host);
  Curl_safefree(data->state.aptr.cookiehost);
  Curl_safefree(data->state.aptr.rtsp_transport);
  Curl_safefree(data->state.aptr.user);
  Curl_safefree(data->state.aptr.passwd);
  Curl_safefree(data->state.aptr.proxyuser);
  Curl_safefree(data->state.aptr.proxypasswd);

#ifndef CURL_DISABLE_DOH
  if(data->req.doh) {
    Curl_dyn_free(&data->req.doh->probe[0].serverdoh);
    Curl_dyn_free(&data->req.doh->probe[1].serverdoh);
    curl_slist_free_all(data->req.doh->headers);
    Curl_safefree(data->req.doh);
526
527
528
529
530
531
532


533
534
535
536
537
538
539

  Curl_mime_initpart(&set->mimepost, data);

  /*
   * libcurl 7.10 introduced SSL verification *by default*! This needs to be
   * switched off unless wanted.
   */


  set->ssl.primary.verifypeer = TRUE;
  set->ssl.primary.verifyhost = TRUE;
#ifdef USE_TLS_SRP
  set->ssl.authtype = CURL_TLSAUTH_NONE;
#endif
  set->ssh_auth_types = CURLSSH_AUTH_DEFAULT; /* defaults to any auth
                                                      type */







>
>







530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545

  Curl_mime_initpart(&set->mimepost, data);

  /*
   * libcurl 7.10 introduced SSL verification *by default*! This needs to be
   * switched off unless wanted.
   */
  set->doh_verifyhost = TRUE;
  set->doh_verifypeer = TRUE;
  set->ssl.primary.verifypeer = TRUE;
  set->ssl.primary.verifyhost = TRUE;
#ifdef USE_TLS_SRP
  set->ssl.authtype = CURL_TLSAUTH_NONE;
#endif
  set->ssh_auth_types = CURLSSH_AUTH_DEFAULT; /* defaults to any auth
                                                      type */
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
   *
   * If Schannel is the selected SSL backend then these locations are
   * ignored. We allow setting CA location for schannel only when explicitly
   * specified by the user via CURLOPT_CAINFO / --cacert.
   */
  if(Curl_ssl_backend() != CURLSSLBACKEND_SCHANNEL) {
#if defined(CURL_CA_BUNDLE)
    result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_ORIG], CURL_CA_BUNDLE);
    if(result)
      return result;

    result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY],
                            CURL_CA_BUNDLE);
    if(result)
      return result;
#endif
#if defined(CURL_CA_PATH)
    result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_ORIG], CURL_CA_PATH);
    if(result)
      return result;

    result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], CURL_CA_PATH);
    if(result)
      return result;
#endif







|









|







571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
   *
   * If Schannel is the selected SSL backend then these locations are
   * ignored. We allow setting CA location for schannel only when explicitly
   * specified by the user via CURLOPT_CAINFO / --cacert.
   */
  if(Curl_ssl_backend() != CURLSSLBACKEND_SCHANNEL) {
#if defined(CURL_CA_BUNDLE)
    result = Curl_setstropt(&set->str[STRING_SSL_CAFILE], CURL_CA_BUNDLE);
    if(result)
      return result;

    result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY],
                            CURL_CA_BUNDLE);
    if(result)
      return result;
#endif
#if defined(CURL_CA_PATH)
    result = Curl_setstropt(&set->str[STRING_SSL_CAPATH], CURL_CA_PATH);
    if(result)
      return result;

    result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], CURL_CA_PATH);
    if(result)
      return result;
#endif
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
  set->upload_buffer_size = UPLOADBUFFER_DEFAULT;
  set->happy_eyeballs_timeout = CURL_HET_DEFAULT;
  set->fnmatch = ZERO_NULL;
  set->upkeep_interval_ms = CURL_UPKEEP_INTERVAL_DEFAULT;
  set->maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */
  set->maxage_conn = 118;
  set->http09_allowed = FALSE;
  set->httpversion =
#ifdef USE_NGHTTP2
    CURL_HTTP_VERSION_2TLS
#else
    CURL_HTTP_VERSION_1_1
#endif
    ;
  Curl_http2_init_userset(set);







|







611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
  set->upload_buffer_size = UPLOADBUFFER_DEFAULT;
  set->happy_eyeballs_timeout = CURL_HET_DEFAULT;
  set->fnmatch = ZERO_NULL;
  set->upkeep_interval_ms = CURL_UPKEEP_INTERVAL_DEFAULT;
  set->maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */
  set->maxage_conn = 118;
  set->http09_allowed = FALSE;
  set->httpwant =
#ifdef USE_NGHTTP2
    CURL_HTTP_VERSION_2TLS
#else
    CURL_HTTP_VERSION_1_1
#endif
    ;
  Curl_http2_init_userset(set);
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
  Curl_http_auth_cleanup_negotiate(conn);

  if(conn->bits.connect_only)
    /* treat the connection as dead in CONNECT_ONLY situations */
    dead_connection = TRUE;

  /* temporarily attach the connection to this transfer handle for the
     disonnect and shutdown */
  Curl_attach_connnection(data, conn);

  if(conn->handler->disconnect)
    /* This is set if protocol-specific cleanups should be made */
    conn->handler->disconnect(data, conn, dead_connection);

  conn_shutdown(data, conn);







|







839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
  Curl_http_auth_cleanup_negotiate(conn);

  if(conn->bits.connect_only)
    /* treat the connection as dead in CONNECT_ONLY situations */
    dead_connection = TRUE;

  /* temporarily attach the connection to this transfer handle for the
     disconnect and shutdown */
  Curl_attach_connnection(data, conn);

  if(conn->handler->disconnect)
    /* This is set if protocol-specific cleanups should be made */
    conn->handler->disconnect(data, conn, dead_connection);

  conn_shutdown(data, conn);
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
  int avail = 0;

  /* If a HTTP protocol and multiplexing is enabled */
  if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
     (!conn->bits.protoconnstart || !conn->bits.close)) {

    if(Curl_multiplex_wanted(handle->multi) &&
       (handle->set.httpversion >= CURL_HTTP_VERSION_2))
      /* allows HTTP/2 */
      avail |= CURLPIPE_MULTIPLEX;
  }
  return avail;
}

#ifndef CURL_DISABLE_PROXY







|







889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
  int avail = 0;

  /* If a HTTP protocol and multiplexing is enabled */
  if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
     (!conn->bits.protoconnstart || !conn->bits.close)) {

    if(Curl_multiplex_wanted(handle->multi) &&
       (handle->state.httpwant >= CURL_HTTP_VERSION_2))
      /* allows HTTP/2 */
      avail |= CURLPIPE_MULTIPLEX;
  }
  return avail;
}

#ifndef CURL_DISABLE_PROXY
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
      /* The protocol has a special method for checking the state of the
         connection. Use it to check if the connection is dead. */
      unsigned int state;

      /* briefly attach the connection to this transfer for the purpose of
         checking it */
      Curl_attach_connnection(data, conn);
      conn->data = data; /* find the way back if necessary */
      state = conn->handler->connection_check(data, conn, CONNCHECK_ISDEAD);
      dead = (state & CONNRESULT_DEAD);
      /* detach the connection again */
      Curl_detach_connnection(data);
      conn->data = NULL; /* clear it again */
    }
    else {
      /* Use the general method for determining the death of a connection */
      dead = SocketIsDead(conn->sock[FIRSTSOCKET]);
    }

    if(dead) {







|




|







988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
      /* The protocol has a special method for checking the state of the
         connection. Use it to check if the connection is dead. */
      unsigned int state;

      /* briefly attach the connection to this transfer for the purpose of
         checking it */
      Curl_attach_connnection(data, conn);

      state = conn->handler->connection_check(data, conn, CONNCHECK_ISDEAD);
      dead = (state & CONNRESULT_DEAD);
      /* detach the connection again */
      Curl_detach_connnection(data);

    }
    else {
      /* Use the general method for determining the death of a connection */
      dead = SocketIsDead(conn->sock[FIRSTSOCKET]);
    }

    if(dead) {
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
  bool foundPendingCandidate = FALSE;
  bool canmultiplex = IsMultiplexingPossible(data, needle);
  struct connectbundle *bundle;
  const char *hostbundle;

#ifdef USE_NTLM
  bool wantNTLMhttp = ((data->state.authhost.want &
                      (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
                      (needle->handler->protocol & PROTO_FAMILY_HTTP));
#ifndef CURL_DISABLE_PROXY
  bool wantProxyNTLMhttp = (needle->bits.proxy_user_passwd &&
                           ((data->state.authproxy.want &
                           (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
                           (needle->handler->protocol & PROTO_FAMILY_HTTP)));
#else
  bool wantProxyNTLMhttp = FALSE;
#endif
#endif

  *force_reuse = FALSE;
  *waitpipe = FALSE;







|
|


|
|
|







1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
  bool foundPendingCandidate = FALSE;
  bool canmultiplex = IsMultiplexingPossible(data, needle);
  struct connectbundle *bundle;
  const char *hostbundle;

#ifdef USE_NTLM
  bool wantNTLMhttp = ((data->state.authhost.want &
                        (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
                       (needle->handler->protocol & PROTO_FAMILY_HTTP));
#ifndef CURL_DISABLE_PROXY
  bool wantProxyNTLMhttp = (needle->bits.proxy_user_passwd &&
                            ((data->state.authproxy.want &
                              (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
                             (needle->handler->protocol & PROTO_FAMILY_HTTP)));
#else
  bool wantProxyNTLMhttp = FALSE;
#endif
#endif

  *force_reuse = FALSE;
  *waitpipe = FALSE;
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278



1279

1280
1281
1282
1283
1284
1285
1286
            if(check->ssl[FIRSTSOCKET].state != ssl_connection_complete)
              continue;
          }
        }
      }
#endif

      DEBUGASSERT(!check->data || GOOD_EASY_HANDLE(check->data));

      if(!canmultiplex && check->data)
        /* this request can't be multiplexed but the checked connection is
           already in use so we skip it */
        continue;

      if(check->data && (check->data->multi != needle->data->multi))
        /* this could be subject for multiplex use, but only if they belong to
         * the same multi handle */



        continue;


      if(needle->localdev || needle->localport) {
        /* If we are bound to a specific local end (IP+port), we must not
           re-use a random other one, although if we didn't ask for a
           particular one we can reuse one that was bound.

           This comparison is a bit rough and too strict. Since the input







<
<
|




|
|
|
>
>
>
|
>







1268
1269
1270
1271
1272
1273
1274


1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
            if(check->ssl[FIRSTSOCKET].state != ssl_connection_complete)
              continue;
          }
        }
      }
#endif



      if(!canmultiplex && CONN_INUSE(check))
        /* this request can't be multiplexed but the checked connection is
           already in use so we skip it */
        continue;

      if(CONN_INUSE(check)) {
        /* Subject for multiplex use if 'checks' belongs to the same multi
           handle as 'data' is. */
        struct Curl_llist_element *e = check->easyq.head;
        struct Curl_easy *entry = e->ptr;
        if(entry->multi != data->multi)
          continue;
      }

      if(needle->localdev || needle->localport) {
        /* If we are bound to a specific local end (IP+port), we must not
           re-use a random other one, although if we didn't ask for a
           particular one we can reuse one that was bound.

           This comparison is a bit rough and too strict. Since the input
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
            struct http_conn *httpc = &check->proto.httpc;
            if(multiplexed >= httpc->settings.max_concurrent_streams) {
              infof(data, "MAX_CONCURRENT_STREAMS reached, skip (%zu)\n",
                    multiplexed);
              continue;
            }
            else if(multiplexed >=
                    Curl_multi_max_concurrent_streams(needle->data->multi)) {
              infof(data, "client side MAX_CONCURRENT_STREAMS reached"
                    ", skip (%zu)\n",
                    multiplexed);
              continue;
            }
          }
#endif







|







1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
            struct http_conn *httpc = &check->proto.httpc;
            if(multiplexed >= httpc->settings.max_concurrent_streams) {
              infof(data, "MAX_CONCURRENT_STREAMS reached, skip (%zu)\n",
                    multiplexed);
              continue;
            }
            else if(multiplexed >=
                    Curl_multi_max_concurrent_streams(data->multi)) {
              infof(data, "client side MAX_CONCURRENT_STREAMS reached"
                    ", skip (%zu)\n",
                    multiplexed);
              continue;
            }
          }
#endif
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
        }
      }
    }
  }

  if(chosen) {
    /* mark it as used before releasing the lock */
    chosen->data = data; /* own it! */
    Curl_attach_connnection(data, chosen);
    CONNCACHE_UNLOCK(data);
    *usethis = chosen;
    return TRUE; /* yes, we found one to use! */
  }
  CONNCACHE_UNLOCK(data);








<







1463
1464
1465
1466
1467
1468
1469

1470
1471
1472
1473
1474
1475
1476
        }
      }
    }
  }

  if(chosen) {
    /* mark it as used before releasing the lock */

    Curl_attach_connnection(data, chosen);
    CONNCACHE_UNLOCK(data);
    *usethis = chosen;
    return TRUE; /* yes, we found one to use! */
  }
  CONNCACHE_UNLOCK(data);

1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686

  /* Store creation time to help future close decision making */
  conn->created = Curl_now();

  /* Store current time to give a baseline to keepalive connection times. */
  conn->keepalive = Curl_now();

  conn->data = data; /* Setup the association between this connection
                        and the Curl_easy */

#ifndef CURL_DISABLE_PROXY
  conn->http_proxy.proxytype = data->set.proxytype;
  conn->socks_proxy.proxytype = CURLPROXY_SOCKS4;

  /* note that these two proxy bits are now just on what looks to be
     requested, they may be altered down the road */
  conn->bits.proxy = (data->set.str[STRING_PROXY] &&







<
<
<







1677
1678
1679
1680
1681
1682
1683



1684
1685
1686
1687
1688
1689
1690

  /* Store creation time to help future close decision making */
  conn->created = Curl_now();

  /* Store current time to give a baseline to keepalive connection times. */
  conn->keepalive = Curl_now();




#ifndef CURL_DISABLE_PROXY
  conn->http_proxy.proxytype = data->set.proxytype;
  conn->socks_proxy.proxytype = CURLPROXY_SOCKS4;

  /* note that these two proxy bits are now just on what looks to be
     requested, they may be altered down the road */
  conn->bits.proxy = (data->set.str[STRING_PROXY] &&
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713

  if(data->set.str[STRING_PRE_PROXY] && *data->set.str[STRING_PRE_PROXY]) {
    conn->bits.proxy = TRUE;
    conn->bits.socksproxy = TRUE;
  }

  conn->bits.proxy_user_passwd =
    (data->set.str[STRING_PROXYUSERNAME]) ? TRUE : FALSE;
  conn->bits.tunnel_proxy = data->set.tunnel_thru_httpproxy;
#endif /* CURL_DISABLE_PROXY */

  conn->bits.user_passwd = (data->set.str[STRING_USERNAME]) ? TRUE : FALSE;
#ifndef CURL_DISABLE_FTP
  conn->bits.ftp_use_epsv = data->set.ftp_use_epsv;
  conn->bits.ftp_use_eprt = data->set.ftp_use_eprt;
#endif
  conn->ssl_config.verifystatus = data->set.ssl.primary.verifystatus;
  conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer;
  conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost;







|



|







1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717

  if(data->set.str[STRING_PRE_PROXY] && *data->set.str[STRING_PRE_PROXY]) {
    conn->bits.proxy = TRUE;
    conn->bits.socksproxy = TRUE;
  }

  conn->bits.proxy_user_passwd =
    (data->state.aptr.proxyuser) ? TRUE : FALSE;
  conn->bits.tunnel_proxy = data->set.tunnel_thru_httpproxy;
#endif /* CURL_DISABLE_PROXY */

  conn->bits.user_passwd = (data->state.aptr.user) ? TRUE : FALSE;
#ifndef CURL_DISABLE_FTP
  conn->bits.ftp_use_epsv = data->set.ftp_use_epsv;
  conn->bits.ftp_use_eprt = data->set.ftp_use_eprt;
#endif
  conn->ssl_config.verifystatus = data->set.ssl.primary.verifystatus;
  conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer;
  conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost;
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906


1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959

1960

1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972





1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985



1986
1987
1988
1989


1990
1991
1992
1993
1994
1995
1996
1997
1998
1999



2000
2001
2002

2003
2004
2005
2006
2007
2008
2009
    uh = data->state.uh = curl_url();
  }

  if(!uh)
    return CURLE_OUT_OF_MEMORY;

  if(data->set.str[STRING_DEFAULT_PROTOCOL] &&
     !Curl_is_absolute_url(data->change.url, NULL, MAX_SCHEME_LEN)) {
    char *url;
    if(data->change.url_alloc)
      free(data->change.url);
    url = aprintf("%s://%s", data->set.str[STRING_DEFAULT_PROTOCOL],
                  data->change.url);
    if(!url)
      return CURLE_OUT_OF_MEMORY;


    data->change.url = url;
    data->change.url_alloc = TRUE;
  }

  if(!use_set_uh) {
    char *newurl;
    uc = curl_url_set(uh, CURLUPART_URL, data->change.url,
                    CURLU_GUESS_SCHEME |
                    CURLU_NON_SUPPORT_SCHEME |
                    (data->set.disallow_username_in_url ?
                     CURLU_DISALLOW_USER : 0) |
                    (data->set.path_as_is ? CURLU_PATH_AS_IS : 0));
    if(uc) {
      DEBUGF(infof(data, "curl_url_set rejected %s\n", data->change.url));
      return Curl_uc_to_curlcode(uc);
    }

    /* after it was parsed, get the generated normalized version */
    uc = curl_url_get(uh, CURLUPART_URL, &newurl, 0);
    if(uc)
      return Curl_uc_to_curlcode(uc);
    if(data->change.url_alloc)
      free(data->change.url);
    data->change.url = newurl;
    data->change.url_alloc = TRUE;
  }

  uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
  if(uc)
    return Curl_uc_to_curlcode(uc);

  uc = curl_url_get(uh, CURLUPART_HOST, &data->state.up.hostname, 0);
  if(uc) {
    if(!strcasecompare("file", data->state.up.scheme))
      return CURLE_OUT_OF_MEMORY;
  }

#ifdef USE_HSTS
  if(data->hsts && strcasecompare("http", data->state.up.scheme)) {
    if(Curl_hsts(data->hsts, data->state.up.hostname, TRUE)) {
      char *url;
      Curl_safefree(data->state.up.scheme);
      uc = curl_url_set(uh, CURLUPART_SCHEME, "https", 0);
      if(uc)
        return Curl_uc_to_curlcode(uc);
      if(data->change.url_alloc)
        Curl_safefree(data->change.url);
      /* after update, get the updated version */
      uc = curl_url_get(uh, CURLUPART_URL, &url, 0);
      if(uc)
        return Curl_uc_to_curlcode(uc);
      uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
      if(uc)

        return Curl_uc_to_curlcode(uc);

      data->change.url = url;
      data->change.url_alloc = TRUE;
      infof(data, "Switched from HTTP to HTTPS due to HSTS => %s\n",
            data->change.url);
    }
  }
#endif

  result = findprotocol(data, conn, data->state.up.scheme);
  if(result)
    return result;






  /* we don't use the URL API's URL decoder option here since it rejects
     control codes and we want to allow them for some schemes in the user and
     password fields */
  uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, 0);
  if(!uc) {
    char *decoded;
    result = Curl_urldecode(NULL, data->state.up.user, 0, &decoded, NULL,
                            conn->handler->flags&PROTOPT_USERPWDCTRL ?
                            REJECT_ZERO : REJECT_CTRL);
    if(result)
      return result;
    conn->user = decoded;
    conn->bits.user_passwd = TRUE;



  }
  else if(uc != CURLUE_NO_USER)
    return Curl_uc_to_curlcode(uc);



  uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
  if(!uc) {
    char *decoded;
    result = Curl_urldecode(NULL, data->state.up.password, 0, &decoded, NULL,
                            conn->handler->flags&PROTOPT_USERPWDCTRL ?
                            REJECT_ZERO : REJECT_CTRL);
    if(result)
      return result;
    conn->passwd = decoded;
    conn->bits.user_passwd = TRUE;



  }
  else if(uc != CURLUE_NO_PASSWORD)
    return Curl_uc_to_curlcode(uc);


  uc = curl_url_get(uh, CURLUPART_OPTIONS, &data->state.up.options,
                    CURLU_URLDECODE);
  if(!uc) {
    conn->options = strdup(data->state.up.options);
    if(!conn->options)
      return CURLE_OUT_OF_MEMORY;







|
<
<
<
|
|


>
>
|
|




|






|







|
|
|
|




















|
|





|
>

>
|
|

|








>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
|
>







1896
1897
1898
1899
1900
1901
1902
1903



1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
    uh = data->state.uh = curl_url();
  }

  if(!uh)
    return CURLE_OUT_OF_MEMORY;

  if(data->set.str[STRING_DEFAULT_PROTOCOL] &&
     !Curl_is_absolute_url(data->state.url, NULL, MAX_SCHEME_LEN)) {



    char *url = aprintf("%s://%s", data->set.str[STRING_DEFAULT_PROTOCOL],
                        data->state.url);
    if(!url)
      return CURLE_OUT_OF_MEMORY;
    if(data->state.url_alloc)
      free(data->state.url);
    data->state.url = url;
    data->state.url_alloc = TRUE;
  }

  if(!use_set_uh) {
    char *newurl;
    uc = curl_url_set(uh, CURLUPART_URL, data->state.url,
                    CURLU_GUESS_SCHEME |
                    CURLU_NON_SUPPORT_SCHEME |
                    (data->set.disallow_username_in_url ?
                     CURLU_DISALLOW_USER : 0) |
                    (data->set.path_as_is ? CURLU_PATH_AS_IS : 0));
    if(uc) {
      DEBUGF(infof(data, "curl_url_set rejected %s\n", data->state.url));
      return Curl_uc_to_curlcode(uc);
    }

    /* after it was parsed, get the generated normalized version */
    uc = curl_url_get(uh, CURLUPART_URL, &newurl, 0);
    if(uc)
      return Curl_uc_to_curlcode(uc);
    if(data->state.url_alloc)
      free(data->state.url);
    data->state.url = newurl;
    data->state.url_alloc = TRUE;
  }

  uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
  if(uc)
    return Curl_uc_to_curlcode(uc);

  uc = curl_url_get(uh, CURLUPART_HOST, &data->state.up.hostname, 0);
  if(uc) {
    if(!strcasecompare("file", data->state.up.scheme))
      return CURLE_OUT_OF_MEMORY;
  }

#ifdef USE_HSTS
  if(data->hsts && strcasecompare("http", data->state.up.scheme)) {
    if(Curl_hsts(data->hsts, data->state.up.hostname, TRUE)) {
      char *url;
      Curl_safefree(data->state.up.scheme);
      uc = curl_url_set(uh, CURLUPART_SCHEME, "https", 0);
      if(uc)
        return Curl_uc_to_curlcode(uc);
      if(data->state.url_alloc)
        Curl_safefree(data->state.url);
      /* after update, get the updated version */
      uc = curl_url_get(uh, CURLUPART_URL, &url, 0);
      if(uc)
        return Curl_uc_to_curlcode(uc);
      uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
      if(uc) {
        free(url);
        return Curl_uc_to_curlcode(uc);
      }
      data->state.url = url;
      data->state.url_alloc = TRUE;
      infof(data, "Switched from HTTP to HTTPS due to HSTS => %s\n",
            data->state.url);
    }
  }
#endif

  result = findprotocol(data, conn, data->state.up.scheme);
  if(result)
    return result;

  /*
   * User name and password set with their own options override the
   * credentials possibly set in the URL.
   */
  if(!data->state.aptr.user) {
    /* we don't use the URL API's URL decoder option here since it rejects
       control codes and we want to allow them for some schemes in the user
       and password fields */
    uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, 0);
    if(!uc) {
      char *decoded;
      result = Curl_urldecode(NULL, data->state.up.user, 0, &decoded, NULL,
                              conn->handler->flags&PROTOPT_USERPWDCTRL ?
                              REJECT_ZERO : REJECT_CTRL);
      if(result)
        return result;
      conn->user = decoded;
      conn->bits.user_passwd = TRUE;
      result = Curl_setstropt(&data->state.aptr.user, decoded);
      if(result)
        return result;
    }
    else if(uc != CURLUE_NO_USER)
      return Curl_uc_to_curlcode(uc);
  }

  if(!data->state.aptr.passwd) {
    uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
    if(!uc) {
      char *decoded;
      result = Curl_urldecode(NULL, data->state.up.password, 0, &decoded, NULL,
                              conn->handler->flags&PROTOPT_USERPWDCTRL ?
                              REJECT_ZERO : REJECT_CTRL);
      if(result)
        return result;
      conn->passwd = decoded;
      conn->bits.user_passwd = TRUE;
      result = Curl_setstropt(&data->state.aptr.passwd, decoded);
      if(result)
        return result;
    }
    else if(uc != CURLUE_NO_PASSWORD)
      return Curl_uc_to_curlcode(uc);
  }

  uc = curl_url_get(uh, CURLUPART_OPTIONS, &data->state.up.options,
                    CURLU_URLDECODE);
  if(!uc) {
    conn->options = strdup(data->state.up.options);
    if(!conn->options)
      return CURLE_OUT_OF_MEMORY;
2381
2382
2383
2384
2385
2386
2387
2388


2389



2390
2391
2392




2393
2394
2395
2396
2397
2398
2399
2400
2401




2402
2403
2404
2405
2406
2407
2408
    proxytype == CURLPROXY_SOCKS4A ||
    proxytype == CURLPROXY_SOCKS4;

  proxyinfo = sockstype ? &conn->socks_proxy : &conn->http_proxy;
  proxyinfo->proxytype = proxytype;

  /* Is there a username and password given in this proxy url? */
  curl_url_get(uhp, CURLUPART_USER, &proxyuser, CURLU_URLDECODE);


  curl_url_get(uhp, CURLUPART_PASSWORD, &proxypasswd, CURLU_URLDECODE);



  if(proxyuser || proxypasswd) {
    Curl_safefree(proxyinfo->user);
    proxyinfo->user = proxyuser;




    Curl_safefree(proxyinfo->passwd);
    if(!proxypasswd) {
      proxypasswd = strdup("");
      if(!proxypasswd) {
        result = CURLE_OUT_OF_MEMORY;
        goto error;
      }
    }
    proxyinfo->passwd = proxypasswd;




    conn->bits.proxy_user_passwd = TRUE; /* enable it */
  }

  curl_url_get(uhp, CURLUPART_PORT, &portptr, 0);

  if(portptr) {
    port = (int)strtol(portptr, NULL, 10);







|
>
>
|
>
>
>



>
>
>
>









>
>
>
>







2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
    proxytype == CURLPROXY_SOCKS4A ||
    proxytype == CURLPROXY_SOCKS4;

  proxyinfo = sockstype ? &conn->socks_proxy : &conn->http_proxy;
  proxyinfo->proxytype = proxytype;

  /* Is there a username and password given in this proxy url? */
  uc = curl_url_get(uhp, CURLUPART_USER, &proxyuser, CURLU_URLDECODE);
  if(uc && (uc != CURLUE_NO_USER))
    goto error;
  uc = curl_url_get(uhp, CURLUPART_PASSWORD, &proxypasswd, CURLU_URLDECODE);
  if(uc && (uc != CURLUE_NO_PASSWORD))
    goto error;

  if(proxyuser || proxypasswd) {
    Curl_safefree(proxyinfo->user);
    proxyinfo->user = proxyuser;
    result = Curl_setstropt(&data->state.aptr.proxyuser, proxyuser);
    proxyuser = NULL;
    if(result)
      goto error;
    Curl_safefree(proxyinfo->passwd);
    if(!proxypasswd) {
      proxypasswd = strdup("");
      if(!proxypasswd) {
        result = CURLE_OUT_OF_MEMORY;
        goto error;
      }
    }
    proxyinfo->passwd = proxypasswd;
    result = Curl_setstropt(&data->state.aptr.proxypasswd, proxypasswd);
    proxypasswd = NULL;
    if(result)
      goto error;
    conn->bits.proxy_user_passwd = TRUE; /* enable it */
  }

  curl_url_get(uhp, CURLUPART_PORT, &portptr, 0);

  if(portptr) {
    port = (int)strtol(portptr, NULL, 10);
2440
2441
2442
2443
2444
2445
2446


2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466




2467
2468
2469




2470
2471
2472
2473
2474
2475
2476
    host[len-1] = 0; /* clear the trailing bracket */
    host++;
    zonefrom_url(uhp, data, conn);
  }
  proxyinfo->host.name = host;

  error:


  free(scheme);
  curl_url_cleanup(uhp);
  return result;
}

/*
 * Extract the user and password from the authentication string
 */
static CURLcode parse_proxy_auth(struct Curl_easy *data,
                                 struct connectdata *conn)
{
  const char *proxyuser = data->set.str[STRING_PROXYUSERNAME] ?
    data->set.str[STRING_PROXYUSERNAME] : "";
  const char *proxypasswd = data->set.str[STRING_PROXYPASSWORD] ?
    data->set.str[STRING_PROXYPASSWORD] : "";
  CURLcode result = CURLE_OK;

  if(proxyuser)
    result = Curl_urldecode(data, proxyuser, 0, &conn->http_proxy.user, NULL,
                            REJECT_ZERO);




  if(!result && proxypasswd)
    result = Curl_urldecode(data, proxypasswd, 0, &conn->http_proxy.passwd,
                            NULL, REJECT_ZERO);




  return result;
}

/* create_conn helper to parse and init proxy values. to be called after unix
   socket init but before any proxy vars are evaluated. */
static CURLcode create_conn_helper_init_proxy(struct Curl_easy *data,
                                              struct connectdata *conn)







>
>











|
|
|
|


|


>
>
>
>
|


>
>
>
>







2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
    host[len-1] = 0; /* clear the trailing bracket */
    host++;
    zonefrom_url(uhp, data, conn);
  }
  proxyinfo->host.name = host;

  error:
  free(proxyuser);
  free(proxypasswd);
  free(scheme);
  curl_url_cleanup(uhp);
  return result;
}

/*
 * Extract the user and password from the authentication string
 */
static CURLcode parse_proxy_auth(struct Curl_easy *data,
                                 struct connectdata *conn)
{
  const char *proxyuser = data->state.aptr.proxyuser ?
    data->state.aptr.proxyuser : "";
  const char *proxypasswd = data->state.aptr.proxypasswd ?
    data->state.aptr.proxypasswd : "";
  CURLcode result = CURLE_OK;

  if(proxyuser) {
    result = Curl_urldecode(data, proxyuser, 0, &conn->http_proxy.user, NULL,
                            REJECT_ZERO);
    if(!result)
      result = Curl_setstropt(&data->state.aptr.proxyuser,
                              conn->http_proxy.user);
  }
  if(!result && proxypasswd) {
    result = Curl_urldecode(data, proxypasswd, 0, &conn->http_proxy.passwd,
                            NULL, REJECT_ZERO);
    if(!result)
      result = Curl_setstropt(&data->state.aptr.proxypasswd,
                              conn->http_proxy.passwd);
  }
  return result;
}

/* create_conn helper to parse and init proxy values. to be called after unix
   socket init but before any proxy vars are evaluated. */
static CURLcode create_conn_helper_init_proxy(struct Curl_easy *data,
                                              struct connectdata *conn)
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816



2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891





2892
2893
2894
2895




2896


2897





2898
2899
2900
2901




2902


2903
2904
2905
2906
2907
2908
2909
}

/*
 * Override the login details from the URL with that in the CURLOPT_USERPWD
 * option or a .netrc file, if applicable.
 */
static CURLcode override_login(struct Curl_easy *data,
                               struct connectdata *conn,
                               char **userp, char **passwdp, char **optionsp)
{
  bool user_changed = FALSE;
  bool passwd_changed = FALSE;
  CURLUcode uc;




  if(data->set.use_netrc == CURL_NETRC_REQUIRED && conn->bits.user_passwd) {
    /* ignore user+password in the URL */
    if(*userp) {
      Curl_safefree(*userp);
      user_changed = TRUE;
    }
    if(*passwdp) {
      Curl_safefree(*passwdp);
      passwd_changed = TRUE;
    }
    conn->bits.user_passwd = FALSE; /* disable user+password */
  }

  if(data->set.str[STRING_USERNAME]) {
    free(*userp);
    *userp = strdup(data->set.str[STRING_USERNAME]);
    if(!*userp)
      return CURLE_OUT_OF_MEMORY;
    conn->bits.user_passwd = TRUE; /* enable user+password */
    user_changed = TRUE;
  }

  if(data->set.str[STRING_PASSWORD]) {
    free(*passwdp);
    *passwdp = strdup(data->set.str[STRING_PASSWORD]);
    if(!*passwdp)
      return CURLE_OUT_OF_MEMORY;
    conn->bits.user_passwd = TRUE; /* enable user+password */
    passwd_changed = TRUE;
  }

  if(data->set.str[STRING_OPTIONS]) {
    free(*optionsp);
    *optionsp = strdup(data->set.str[STRING_OPTIONS]);
    if(!*optionsp)
      return CURLE_OUT_OF_MEMORY;
  }

  conn->bits.netrc = FALSE;
  if(data->set.use_netrc != CURL_NETRC_IGNORED &&
      (!*userp || !**userp || !*passwdp || !**passwdp)) {
    bool netrc_user_changed = FALSE;
    bool netrc_passwd_changed = FALSE;
    int ret;

    ret = Curl_parsenetrc(conn->host.name,
                          userp, passwdp,
                          &netrc_user_changed, &netrc_passwd_changed,
                          data->set.str[STRING_NETRC_FILE]);
    if(ret > 0) {
      infof(data, "Couldn't find host %s in the .netrc file; using defaults\n",
            conn->host.name);
    }
    else if(ret < 0) {
      return CURLE_OUT_OF_MEMORY;
    }
    else {
      /* set bits.netrc TRUE to remember that we got the name from a .netrc
         file, so that it is safe to use even if we followed a Location: to a
         different host or similar. */
      conn->bits.netrc = TRUE;
      conn->bits.user_passwd = TRUE; /* enable user+password */

      if(netrc_user_changed) {
        user_changed = TRUE;
      }
      if(netrc_passwd_changed) {
        passwd_changed = TRUE;
      }
    }
  }

  /* for updated strings, we update them in the URL */
  if(user_changed) {





    uc = curl_url_set(data->state.uh, CURLUPART_USER, *userp,
                      CURLU_URLENCODE);
    if(uc)
      return Curl_uc_to_curlcode(uc);




  }


  if(passwd_changed) {





    uc = curl_url_set(data->state.uh, CURLUPART_PASSWORD, *passwdp,
                      CURLU_URLENCODE);
    if(uc)
      return Curl_uc_to_curlcode(uc);




  }


  return CURLE_OK;
}

/*
 * Set the login details so they're available in the connection
 */
static CURLcode set_login(struct connectdata *conn)







|
<

<
<

>
>
>


<
<
|
<
<
<
|
<
<



<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<








|
<









|
|










<
<
<
<
<
<
<




|
>
>
>
>
>
|



>
>
>
>
|
>
>
|
>
>
>
>
>
|
|


>
>
>
>
|
>
>







2846
2847
2848
2849
2850
2851
2852
2853

2854


2855
2856
2857
2858
2859
2860


2861



2862


2863
2864
2865


















2866
2867
2868
2869
2870
2871
2872
2873
2874

2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895







2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
}

/*
 * Override the login details from the URL with that in the CURLOPT_USERPWD
 * option or a .netrc file, if applicable.
 */
static CURLcode override_login(struct Curl_easy *data,
                               struct connectdata *conn)

{


  CURLUcode uc;
  char **userp = &conn->user;
  char **passwdp = &conn->passwd;
  char **optionsp = &conn->options;

  if(data->set.use_netrc == CURL_NETRC_REQUIRED && conn->bits.user_passwd) {


    Curl_safefree(*userp);



    Curl_safefree(*passwdp);


    conn->bits.user_passwd = FALSE; /* disable user+password */
  }



















  if(data->set.str[STRING_OPTIONS]) {
    free(*optionsp);
    *optionsp = strdup(data->set.str[STRING_OPTIONS]);
    if(!*optionsp)
      return CURLE_OUT_OF_MEMORY;
  }

  conn->bits.netrc = FALSE;
  if(data->set.use_netrc && !data->set.str[STRING_USERNAME]) {

    bool netrc_user_changed = FALSE;
    bool netrc_passwd_changed = FALSE;
    int ret;

    ret = Curl_parsenetrc(conn->host.name,
                          userp, passwdp,
                          &netrc_user_changed, &netrc_passwd_changed,
                          data->set.str[STRING_NETRC_FILE]);
    if(ret > 0) {
      infof(data, "Couldn't find host %s in the %s file; using defaults\n",
            conn->host.name, data->set.str[STRING_NETRC_FILE]);
    }
    else if(ret < 0) {
      return CURLE_OUT_OF_MEMORY;
    }
    else {
      /* set bits.netrc TRUE to remember that we got the name from a .netrc
         file, so that it is safe to use even if we followed a Location: to a
         different host or similar. */
      conn->bits.netrc = TRUE;
      conn->bits.user_passwd = TRUE; /* enable user+password */







    }
  }

  /* for updated strings, we update them in the URL */
  if(*userp) {
    CURLcode result = Curl_setstropt(&data->state.aptr.user, *userp);
    if(result)
      return result;
  }
  if(data->state.aptr.user) {
    uc = curl_url_set(data->state.uh, CURLUPART_USER, data->state.aptr.user,
                      CURLU_URLENCODE);
    if(uc)
      return Curl_uc_to_curlcode(uc);
    if(!*userp) {
      *userp = strdup(data->state.aptr.user);
      if(!*userp)
        return CURLE_OUT_OF_MEMORY;
    }
  }

  if(*passwdp) {
    CURLcode result = Curl_setstropt(&data->state.aptr.passwd, *passwdp);
    if(result)
      return result;
  }
  if(data->state.aptr.passwd) {
    uc = curl_url_set(data->state.uh, CURLUPART_PASSWORD,
                      data->state.aptr.passwd, CURLU_URLENCODE);
    if(uc)
      return Curl_uc_to_curlcode(uc);
    if(!*passwdp) {
      *passwdp = strdup(data->state.aptr.passwd);
      if(!*passwdp)
        return CURLE_OUT_OF_MEMORY;
    }
  }

  return CURLE_OK;
}

/*
 * Set the login details so they're available in the connection
 */
static CURLcode set_login(struct connectdata *conn)
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
      if(rc == CURLRESOLV_PENDING)
        *async = TRUE;

      else if(rc == CURLRESOLV_TIMEDOUT)
        result = CURLE_OPERATION_TIMEDOUT;

      else if(!hostaddr) {
        failf(data, "Couldn't resolve host '%s'", connhost->dispname);
        result = CURLE_COULDNT_RESOLVE_HOST;
        /* don't return yet, we need to clean up the timeout first */
      }
    }
#ifndef CURL_DISABLE_PROXY
    else {
      /* This is a proxy that hasn't been resolved yet. */







|







3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
      if(rc == CURLRESOLV_PENDING)
        *async = TRUE;

      else if(rc == CURLRESOLV_TIMEDOUT)
        result = CURLE_OPERATION_TIMEDOUT;

      else if(!hostaddr) {
        failf(data, "Could not resolve host: %s", connhost->dispname);
        result = CURLE_COULDNT_RESOLVE_HOST;
        /* don't return yet, we need to clean up the timeout first */
      }
    }
#ifndef CURL_DISABLE_PROXY
    else {
      /* This is a proxy that hasn't been resolved yet. */
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
                       struct connectdata *old_conn,
                       struct connectdata *conn)
{
  /* 'local_ip' and 'local_port' get filled with local's numerical
     ip address and port number whenever an outgoing connection is
     **established** from the primary socket to a remote address. */
  char local_ip[MAX_IPADR_LEN] = "";
  long local_port = -1;
#ifndef CURL_DISABLE_PROXY
  Curl_free_idnconverted_hostname(&old_conn->http_proxy.host);
  Curl_free_idnconverted_hostname(&old_conn->socks_proxy.host);

  free(old_conn->http_proxy.host.rawalloc);
  free(old_conn->socks_proxy.host.rawalloc);
  Curl_free_primary_ssl_config(&old_conn->proxy_ssl_config);
#endif
  /* free the SSL config struct from this connection struct as this was
     allocated in vain and is targeted for destruction */
  Curl_free_primary_ssl_config(&old_conn->ssl_config);

  conn->data = data;

  /* get the user+password information from the old_conn struct since it may
   * be new for this request even when we re-use an existing connection */
  conn->bits.user_passwd = old_conn->bits.user_passwd;
  if(conn->bits.user_passwd) {
    /* use the new user name and password though */
    Curl_safefree(conn->user);
    Curl_safefree(conn->passwd);







|












<
<







3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413


3414
3415
3416
3417
3418
3419
3420
                       struct connectdata *old_conn,
                       struct connectdata *conn)
{
  /* 'local_ip' and 'local_port' get filled with local's numerical
     ip address and port number whenever an outgoing connection is
     **established** from the primary socket to a remote address. */
  char local_ip[MAX_IPADR_LEN] = "";
  int local_port = -1;
#ifndef CURL_DISABLE_PROXY
  Curl_free_idnconverted_hostname(&old_conn->http_proxy.host);
  Curl_free_idnconverted_hostname(&old_conn->socks_proxy.host);

  free(old_conn->http_proxy.host.rawalloc);
  free(old_conn->socks_proxy.host.rawalloc);
  Curl_free_primary_ssl_config(&old_conn->proxy_ssl_config);
#endif
  /* free the SSL config struct from this connection struct as this was
     allocated in vain and is targeted for destruction */
  Curl_free_primary_ssl_config(&old_conn->ssl_config);



  /* get the user+password information from the old_conn struct since it may
   * be new for this request even when we re-use an existing connection */
  conn->bits.user_passwd = old_conn->bits.user_passwd;
  if(conn->bits.user_passwd) {
    /* use the new user name and password though */
    Curl_safefree(conn->user);
    Curl_safefree(conn->passwd);
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
 * already resolved.
 *
 * @param data The sessionhandle pointer
 * @param in_connect is set to the next connection data pointer
 * @param async is set TRUE when an async DNS resolution is pending
 * @see Curl_setup_conn()
 *
 * *NOTE* this function assigns the conn->data pointer!
 */

static CURLcode create_conn(struct Curl_easy *data,
                            struct connectdata **in_connect,
                            bool *async)
{
  CURLcode result = CURLE_OK;







<







3494
3495
3496
3497
3498
3499
3500

3501
3502
3503
3504
3505
3506
3507
 * already resolved.
 *
 * @param data The sessionhandle pointer
 * @param in_connect is set to the next connection data pointer
 * @param async is set TRUE when an async DNS resolution is pending
 * @see Curl_setup_conn()
 *

 */

static CURLcode create_conn(struct Curl_easy *data,
                            struct connectdata **in_connect,
                            bool *async)
{
  CURLcode result = CURLE_OK;
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502

  *async = FALSE;
  *in_connect = NULL;

  /*************************************************************
   * Check input data
   *************************************************************/
  if(!data->change.url) {
    result = CURLE_URL_MALFORMAT;
    goto out;
  }

  /* First, split up the current URL in parts so that we can use the
     parts for checking against the already present connections. In order
     to not have to modify everything at once, we allocate a temporary







|







3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530

  *async = FALSE;
  *in_connect = NULL;

  /*************************************************************
   * Check input data
   *************************************************************/
  if(!data->state.url) {
    result = CURLE_URL_MALFORMAT;
    goto out;
  }

  /* First, split up the current URL in parts so that we can use the
     parts for checking against the already present connections. In order
     to not have to modify everything at once, we allocate a temporary
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
   *************************************************************/
  result = parse_remote_port(data, conn);
  if(result)
    goto out;

  /* Check for overridden login details and set them accordingly so they
     they are known when protocol->setup_connection is called! */
  result = override_login(data, conn, &conn->user, &conn->passwd,
                          &conn->options);
  if(result)
    goto out;

  result = set_login(conn); /* default credentials */
  if(result)
    goto out;








|
<







3584
3585
3586
3587
3588
3589
3590
3591

3592
3593
3594
3595
3596
3597
3598
   *************************************************************/
  result = parse_remote_port(data, conn);
  if(result)
    goto out;

  /* Check for overridden login details and set them accordingly so they
     they are known when protocol->setup_connection is called! */
  result = override_login(data, conn);

  if(result)
    goto out;

  result = set_login(conn); /* default credentials */
  if(result)
    goto out;

3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
     sure that the strings in the master copy are pointing to the correct
     strings in the session handle strings array!

     Keep in mind that the pointers in the master copy are pointing to strings
     that will be freed as part of the Curl_easy struct, but all cloned
     copies will be separately allocated.
  */
  data->set.ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_ORIG];
  data->set.ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE_ORIG];
  data->set.ssl.primary.random_file = data->set.str[STRING_SSL_RANDOM_FILE];
  data->set.ssl.primary.egdsocket = data->set.str[STRING_SSL_EGDSOCKET];
  data->set.ssl.primary.cipher_list =
    data->set.str[STRING_SSL_CIPHER_LIST_ORIG];
  data->set.ssl.primary.cipher_list13 =
    data->set.str[STRING_SSL_CIPHER13_LIST_ORIG];
  data->set.ssl.primary.pinned_key =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
  data->set.ssl.primary.cert_blob = data->set.blobs[BLOB_CERT_ORIG];
  data->set.ssl.primary.curves = data->set.str[STRING_SSL_EC_CURVES];

#ifndef CURL_DISABLE_PROXY
  data->set.proxy_ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_PROXY];
  data->set.proxy_ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE_PROXY];
  data->set.proxy_ssl.primary.random_file =
    data->set.str[STRING_SSL_RANDOM_FILE];







|
|



|

|

|
|







3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
     sure that the strings in the master copy are pointing to the correct
     strings in the session handle strings array!

     Keep in mind that the pointers in the master copy are pointing to strings
     that will be freed as part of the Curl_easy struct, but all cloned
     copies will be separately allocated.
  */
  data->set.ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH];
  data->set.ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE];
  data->set.ssl.primary.random_file = data->set.str[STRING_SSL_RANDOM_FILE];
  data->set.ssl.primary.egdsocket = data->set.str[STRING_SSL_EGDSOCKET];
  data->set.ssl.primary.cipher_list =
    data->set.str[STRING_SSL_CIPHER_LIST];
  data->set.ssl.primary.cipher_list13 =
    data->set.str[STRING_SSL_CIPHER13_LIST];
  data->set.ssl.primary.pinned_key =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
  data->set.ssl.primary.cert_blob = data->set.blobs[BLOB_CERT];
  data->set.ssl.primary.curves = data->set.str[STRING_SSL_EC_CURVES];

#ifndef CURL_DISABLE_PROXY
  data->set.proxy_ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_PROXY];
  data->set.proxy_ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE_PROXY];
  data->set.proxy_ssl.primary.random_file =
    data->set.str[STRING_SSL_RANDOM_FILE];
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
  data->set.proxy_ssl.cert_type = data->set.str[STRING_CERT_TYPE_PROXY];
  data->set.proxy_ssl.key = data->set.str[STRING_KEY_PROXY];
  data->set.proxy_ssl.key_type = data->set.str[STRING_KEY_TYPE_PROXY];
  data->set.proxy_ssl.key_passwd = data->set.str[STRING_KEY_PASSWD_PROXY];
  data->set.proxy_ssl.primary.clientcert = data->set.str[STRING_CERT_PROXY];
  data->set.proxy_ssl.key_blob = data->set.blobs[BLOB_KEY_PROXY];
#endif
  data->set.ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_ORIG];
  data->set.ssl.issuercert = data->set.str[STRING_SSL_ISSUERCERT_ORIG];
  data->set.ssl.cert_type = data->set.str[STRING_CERT_TYPE_ORIG];
  data->set.ssl.key = data->set.str[STRING_KEY_ORIG];
  data->set.ssl.key_type = data->set.str[STRING_KEY_TYPE_ORIG];
  data->set.ssl.key_passwd = data->set.str[STRING_KEY_PASSWD_ORIG];
  data->set.ssl.primary.clientcert = data->set.str[STRING_CERT_ORIG];
#ifdef USE_TLS_SRP
  data->set.ssl.username = data->set.str[STRING_TLSAUTH_USERNAME_ORIG];
  data->set.ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD_ORIG];
#ifndef CURL_DISABLE_PROXY
  data->set.proxy_ssl.username = data->set.str[STRING_TLSAUTH_USERNAME_PROXY];
  data->set.proxy_ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD_PROXY];
#endif
#endif

  data->set.ssl.key_blob = data->set.blobs[BLOB_KEY_ORIG];
  data->set.ssl.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT_ORIG];

  if(!Curl_clone_primary_ssl_config(&data->set.ssl.primary,
                                    &conn->ssl_config)) {
    result = CURLE_OUT_OF_MEMORY;
    goto out;
  }








|
|
|
|
|
|
|

|
|






|
|







3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
  data->set.proxy_ssl.cert_type = data->set.str[STRING_CERT_TYPE_PROXY];
  data->set.proxy_ssl.key = data->set.str[STRING_KEY_PROXY];
  data->set.proxy_ssl.key_type = data->set.str[STRING_KEY_TYPE_PROXY];
  data->set.proxy_ssl.key_passwd = data->set.str[STRING_KEY_PASSWD_PROXY];
  data->set.proxy_ssl.primary.clientcert = data->set.str[STRING_CERT_PROXY];
  data->set.proxy_ssl.key_blob = data->set.blobs[BLOB_KEY_PROXY];
#endif
  data->set.ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE];
  data->set.ssl.issuercert = data->set.str[STRING_SSL_ISSUERCERT];
  data->set.ssl.cert_type = data->set.str[STRING_CERT_TYPE];
  data->set.ssl.key = data->set.str[STRING_KEY];
  data->set.ssl.key_type = data->set.str[STRING_KEY_TYPE];
  data->set.ssl.key_passwd = data->set.str[STRING_KEY_PASSWD];
  data->set.ssl.primary.clientcert = data->set.str[STRING_CERT];
#ifdef USE_TLS_SRP
  data->set.ssl.username = data->set.str[STRING_TLSAUTH_USERNAME];
  data->set.ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD];
#ifndef CURL_DISABLE_PROXY
  data->set.proxy_ssl.username = data->set.str[STRING_TLSAUTH_USERNAME_PROXY];
  data->set.proxy_ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD_PROXY];
#endif
#endif

  data->set.ssl.key_blob = data->set.blobs[BLOB_KEY];
  data->set.ssl.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT];

  if(!Curl_clone_primary_ssl_config(&data->set.ssl.primary,
                                    &conn->ssl_config)) {
    result = CURLE_OUT_OF_MEMORY;
    goto out;
  }

3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
  return result;
}

/* Curl_setup_conn() is called after the name resolve initiated in
 * create_conn() is all done.
 *
 * Curl_setup_conn() also handles reused connections
 *
 * conn->data MUST already have been setup fine (in create_conn)
 */

CURLcode Curl_setup_conn(struct Curl_easy *data,
                         bool *protocol_done)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;

  Curl_pgrsTime(data, TIMER_NAMELOOKUP);







<
<

<







3975
3976
3977
3978
3979
3980
3981


3982

3983
3984
3985
3986
3987
3988
3989
  return result;
}

/* Curl_setup_conn() is called after the name resolve initiated in
 * create_conn() is all done.
 *
 * Curl_setup_conn() also handles reused connections


 */

CURLcode Curl_setup_conn(struct Curl_easy *data,
                         bool *protocol_done)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;

  Curl_pgrsTime(data, TIMER_NAMELOOKUP);
Changes to jni/curl/lib/urldata.h.
366
367
368
369
370
371
372









373
374
375
376
377
378
379
  BYTE *output_token;
#else
  gss_ctx_id_t context;
  gss_name_t spn;
#endif
};
#endif










/* Struct used for NTLM challenge-response authentication */
#if defined(USE_NTLM)
struct ntlmdata {
#ifdef USE_WINDOWS_SSPI
/* The sslContext is used for the Schannel bindings. The
 * api is available on the Windows 7 SDK and later.







>
>
>
>
>
>
>
>
>







366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
  BYTE *output_token;
#else
  gss_ctx_id_t context;
  gss_name_t spn;
#endif
};
#endif

/* Struct used for SCRAM-SHA-1 authentication */
#ifdef USE_GSASL
#include <gsasl.h>
struct gsasldata {
  Gsasl *ctx;
  Gsasl_session *client;
};
#endif

/* Struct used for NTLM challenge-response authentication */
#if defined(USE_NTLM)
struct ntlmdata {
#ifdef USE_WINDOWS_SSPI
/* The sslContext is used for the Schannel bindings. The
 * api is available on the Windows 7 SDK and later.
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
};

/*
 * The connectdata struct contains all fields and variables that should be
 * unique for an entire connection.
 */
struct connectdata {
  /* 'data' is the CURRENT Curl_easy using this connection -- take great
     caution that this might very well vary between different times this
     connection is used! */
  struct Curl_easy *data;
  struct connstate cnnct;
  struct Curl_llist_element bundle_node; /* conncache */

  /* chunk is for HTTP chunked encoding, but is in the general connectdata
     struct only because we can do just about any protocol through a HTTP proxy
     and a HTTP proxy may in fact respond using chunked encoding */
  struct Curl_chunker chunk;







<
<
<
<







907
908
909
910
911
912
913




914
915
916
917
918
919
920
};

/*
 * The connectdata struct contains all fields and variables that should be
 * unique for an entire connection.
 */
struct connectdata {




  struct connstate cnnct;
  struct Curl_llist_element bundle_node; /* conncache */

  /* chunk is for HTTP chunked encoding, but is in the general connectdata
     struct only because we can do just about any protocol through a HTTP proxy
     and a HTTP proxy may in fact respond using chunked encoding */
  struct Curl_chunker chunk;
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996

  char primary_ip[MAX_IPADR_LEN];
  unsigned char ip_version; /* copied from the Curl_easy at creation time */

  char *user;    /* user name string, allocated */
  char *passwd;  /* password string, allocated */
  char *options; /* options string, allocated */

  char *sasl_authzid;     /* authorisation identity string, allocated */

  int httpversion;        /* the HTTP version*10 reported by the server */
  int rtspversion;        /* the RTSP version*10 reported by the server */

  struct curltime now;     /* "current" time */
  struct curltime created; /* creation time */
  struct curltime lastused; /* when returned to the connection cache */
  curl_socket_t sock[2]; /* two sockets, the second is used for the data
                            transfer when doing FTP */
  curl_socket_t tempsock[2]; /* temporary sockets for happy eyeballs */
  int tempfamily[2]; /* family used for the temp sockets */







<

<
|
<
<







982
983
984
985
986
987
988

989

990


991
992
993
994
995
996
997

  char primary_ip[MAX_IPADR_LEN];
  unsigned char ip_version; /* copied from the Curl_easy at creation time */

  char *user;    /* user name string, allocated */
  char *passwd;  /* password string, allocated */
  char *options; /* options string, allocated */

  char *sasl_authzid;     /* authorisation identity string, allocated */

  unsigned char httpversion; /* the HTTP version*10 reported by the server */


  struct curltime now;     /* "current" time */
  struct curltime created; /* creation time */
  struct curltime lastused; /* when returned to the connection cache */
  curl_socket_t sock[2]; /* two sockets, the second is used for the data
                            transfer when doing FTP */
  curl_socket_t tempsock[2]; /* temporary sockets for happy eyeballs */
  int tempfamily[2]; /* family used for the temp sockets */
1060
1061
1062
1063
1064
1065
1066




1067
1068
1069
1070
1071
1072
1073
  curl_seek_callback seek_func; /* function that seeks the input */
  void *seek_client;            /* pointer to pass to the seek() above */

  /*************** Request - specific items ************/
#if defined(USE_WINDOWS_SSPI) && defined(SECPKG_ATTR_ENDPOINT_BINDINGS)
  CtxtHandle *sslContext;
#endif





#if defined(USE_NTLM)
  curlntlm http_ntlm_state;
  curlntlm proxy_ntlm_state;

  struct ntlmdata ntlm;     /* NTLM differs from other authentication schemes
                               because it authenticates connections, not







>
>
>
>







1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
  curl_seek_callback seek_func; /* function that seeks the input */
  void *seek_client;            /* pointer to pass to the seek() above */

  /*************** Request - specific items ************/
#if defined(USE_WINDOWS_SSPI) && defined(SECPKG_ATTR_ENDPOINT_BINDINGS)
  CtxtHandle *sslContext;
#endif

#ifdef USE_GSASL
  struct gsasldata gsasl;
#endif

#if defined(USE_NTLM)
  curlntlm http_ntlm_state;
  curlntlm proxy_ntlm_state;

  struct ntlmdata ntlm;     /* NTLM differs from other authentication schemes
                               because it authenticates connections, not
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
     order to allow curl_easy_getinfo() to return this information even when
     the session handle is no longer associated with a connection, and also
     allow curl_easy_reset() to clear this information from the session handle
     without disturbing information which is still alive, and that might be
     reused, in the connection cache. */

  char conn_primary_ip[MAX_IPADR_LEN];
  long conn_primary_port;
  char conn_local_ip[MAX_IPADR_LEN];
  long conn_local_port;
  const char *conn_scheme;
  unsigned int conn_protocol;
  struct curl_certinfo certs; /* info about the certs, only populated in
                                 OpenSSL, GnuTLS, Schannel, NSS and GSKit
                                 builds. Asked for with CURLOPT_CERTINFO
                                 / CURLINFO_CERTINFO */
  CURLproxycode pxcode;







|

|







1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
     order to allow curl_easy_getinfo() to return this information even when
     the session handle is no longer associated with a connection, and also
     allow curl_easy_reset() to clear this information from the session handle
     without disturbing information which is still alive, and that might be
     reused, in the connection cache. */

  char conn_primary_ip[MAX_IPADR_LEN];
  int conn_primary_port;
  char conn_local_ip[MAX_IPADR_LEN];
  int conn_local_port;
  const char *conn_scheme;
  unsigned int conn_protocol;
  struct curl_certinfo certs; /* info about the certs, only populated in
                                 OpenSSL, GnuTLS, Schannel, NSS and GSKit
                                 builds. Asked for with CURLOPT_CERTINFO
                                 / CURLINFO_CERTINFO */
  CURLproxycode pxcode;
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336

1337
1338
1339
1340
1341
1342
1343

1344
1345
1346
1347
1348
1349
1350
  char *path;
  char *query;
};

struct UrlState {
  /* Points to the connection cache */
  struct conncache *conn_cache;
  int retrycount; /* number of retries on a new connection */

  /* buffers to store authentication data in, as parsed from input options */
  struct curltime keeps_speed; /* for the progress meter really */

  long lastconnect_id; /* The last connection, -1 if undefined */
  struct dynbuf headerb; /* buffer to store headers in */

  char *buffer; /* download buffer */
  char *ulbuf; /* allocated upload buffer or NULL */
  curl_off_t current_speed;  /* the ProgressShow() function sets this,
                                bytes / second */
  char *first_host; /* host name of the first (not followed) request.
                       if set, this should be the host name that we will
                       sent authorization to, no else. Used to make Location:
                       following not keep sending user+password... This is
                       strdup() data.
                    */

  int first_remote_port; /* remote port of the first (not followed) request */
  struct Curl_ssl_session *session; /* array of 'max_ssl_sessions' size */
  long sessionage;                  /* number of the most recent session */
  struct tempbuf tempwrite[3]; /* BOTH, HEADER, BODY */
  unsigned int tempcount; /* number of entries in use in tempwrite, 0 - 3 */
  int os_errno;  /* filled in with errno whenever an error occurs */
  char *scratch; /* huge buffer[set.buffer_size*2] for upload CRLF replacing */

#ifdef HAVE_SIGNAL
  /* storage for the previous bag^H^H^HSIGPIPE signal handler :-) */
  void (*prev_signal)(int sig);
#endif
  struct digestdata digest;      /* state data for host Digest auth */
  struct digestdata proxydigest; /* state data for proxy Digest auth */








<
<
















>







>







1317
1318
1319
1320
1321
1322
1323


1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
  char *path;
  char *query;
};

struct UrlState {
  /* Points to the connection cache */
  struct conncache *conn_cache;


  /* buffers to store authentication data in, as parsed from input options */
  struct curltime keeps_speed; /* for the progress meter really */

  long lastconnect_id; /* The last connection, -1 if undefined */
  struct dynbuf headerb; /* buffer to store headers in */

  char *buffer; /* download buffer */
  char *ulbuf; /* allocated upload buffer or NULL */
  curl_off_t current_speed;  /* the ProgressShow() function sets this,
                                bytes / second */
  char *first_host; /* host name of the first (not followed) request.
                       if set, this should be the host name that we will
                       sent authorization to, no else. Used to make Location:
                       following not keep sending user+password... This is
                       strdup() data.
                    */
  int retrycount; /* number of retries on a new connection */
  int first_remote_port; /* remote port of the first (not followed) request */
  struct Curl_ssl_session *session; /* array of 'max_ssl_sessions' size */
  long sessionage;                  /* number of the most recent session */
  struct tempbuf tempwrite[3]; /* BOTH, HEADER, BODY */
  unsigned int tempcount; /* number of entries in use in tempwrite, 0 - 3 */
  int os_errno;  /* filled in with errno whenever an error occurs */
  char *scratch; /* huge buffer[set.buffer_size*2] for upload CRLF replacing */
  long followlocation; /* redirect counter */
#ifdef HAVE_SIGNAL
  /* storage for the previous bag^H^H^HSIGPIPE signal handler :-) */
  void (*prev_signal)(int sig);
#endif
  struct digestdata digest;      /* state data for host Digest auth */
  struct digestdata proxydigest; /* state data for proxy Digest auth */

1361
1362
1363
1364
1365
1366
1367
1368

1369
1370
1371
1372
1373
1374
1375
1376
1377
  struct curltime expiretime; /* set this with Curl_expire() only */
  struct Curl_tree timenode; /* for the splay stuff */
  struct Curl_llist timeoutlist; /* list of pending timeouts */
  struct time_node expires[EXPIRE_LAST]; /* nodes for each expire type */

  /* a place to store the most recently set FTP entrypath */
  char *most_recent_ftp_entrypath;


  int httpversion;       /* the lowest HTTP version*10 reported by any server
                            involved in this request */

#if !defined(WIN32) && !defined(MSDOS) && !defined(__EMX__)
/* do FTP line-end conversions on most platforms */
#define CURL_DO_LINEEND_CONV
  /* for FTP downloads: track CRLF sequences that span blocks */
  BIT(prev_block_had_trailing_cr);
  /* for FTP downloads: how many CRLFs did we converted to LFs? */







|
>
|
|







1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
  struct curltime expiretime; /* set this with Curl_expire() only */
  struct Curl_tree timenode; /* for the splay stuff */
  struct Curl_llist timeoutlist; /* list of pending timeouts */
  struct time_node expires[EXPIRE_LAST]; /* nodes for each expire type */

  /* a place to store the most recently set FTP entrypath */
  char *most_recent_ftp_entrypath;
  unsigned char httpwant; /* when non-zero, a specific HTTP version requested
                             to be used in the library's request(s) */
  unsigned char httpversion; /* the lowest HTTP version*10 reported by any
                                server involved in this request */

#if !defined(WIN32) && !defined(MSDOS) && !defined(__EMX__)
/* do FTP line-end conversions on most platforms */
#define CURL_DO_LINEEND_CONV
  /* for FTP downloads: track CRLF sequences that span blocks */
  BIT(prev_block_had_trailing_cr);
  /* for FTP downloads: how many CRLFs did we converted to LFs? */
1396
1397
1398
1399
1400
1401
1402
1403
1404

1405




1406
1407
1408
1409
1410
1411
1412
  curl_read_callback fread_func; /* read callback/function */
  void *in;                      /* CURLOPT_READDATA */

  struct Curl_easy *stream_depends_on;
  int stream_weight;
  CURLU *uh; /* URL handle for the current parsed URL */
  struct urlpieces up;
#if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_MQTT)
  Curl_HttpReq httpreq; /* what kind of HTTP request (if any) is this */

#endif




#ifndef CURL_DISABLE_HTTP
  size_t trailers_bytes_sent;
  struct dynbuf trailers_buf; /* a buffer containing the compiled trailing
                                 headers */
#endif
  trailers_state trailers_state; /* whether we are sending trailers
                                       and what stage are we at */







<

>
|
>
>
>
>







1402
1403
1404
1405
1406
1407
1408

1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
  curl_read_callback fread_func; /* read callback/function */
  void *in;                      /* CURLOPT_READDATA */

  struct Curl_easy *stream_depends_on;
  int stream_weight;
  CURLU *uh; /* URL handle for the current parsed URL */
  struct urlpieces up;

  Curl_HttpReq httpreq; /* what kind of HTTP request (if any) is this */
  char *url;        /* work URL, copied from UserDefined */
  char *referer;    /* referer string */
  struct curl_slist *cookielist; /* list of cookie files set by
                                    curl_easy_setopt(COOKIEFILE) calls */
  struct curl_slist *resolve; /* set to point to the set.resolve list when
                                 this should be dealt with in pretransfer */
#ifndef CURL_DISABLE_HTTP
  size_t trailers_bytes_sent;
  struct dynbuf trailers_buf; /* a buffer containing the compiled trailing
                                 headers */
#endif
  trailers_state trailers_state; /* whether we are sending trailers
                                       and what stage are we at */
1423
1424
1425
1426
1427
1428
1429






1430
1431
1432
1433
1434
1435
1436
    char *userpwd;
    char *rangeline;
    char *ref;
    char *host;
    char *cookiehost;
    char *rtsp_transport;
    char *te; /* TE: request header */






  } aptr;

#ifdef CURLDEBUG
  BIT(conncache_lock);
#endif
  /* when curl_easy_perform() is called, the multi handle is "owned" by
     the easy handle so curl_easy_cleanup() on such an easy handle will







>
>
>
>
>
>







1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
    char *userpwd;
    char *rangeline;
    char *ref;
    char *host;
    char *cookiehost;
    char *rtsp_transport;
    char *te; /* TE: request header */

    /* transfer credentials */
    char *user;
    char *passwd;
    char *proxyuser;
    char *proxypasswd;
  } aptr;

#ifdef CURLDEBUG
  BIT(conncache_lock);
#endif
  /* when curl_easy_perform() is called, the multi handle is "owned" by
     the easy handle so curl_easy_cleanup() on such an easy handle will
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
  BIT(wildcardmatch); /* enable wildcard matching */
  BIT(expect100header);  /* TRUE if we added Expect: 100-continue */
  BIT(disableexpect);    /* TRUE if Expect: is disabled due to a previous
                            417 response */
  BIT(use_range);
  BIT(rangestringalloc); /* the range string is malloc()'ed */
  BIT(done); /* set to FALSE when Curl_init_do() is called and set to TRUE
                  when multi_done() is called, to prevent multi_done() to get
                  invoked twice when the multi interface is used. */
  BIT(stream_depends_e); /* set or don't set the Exclusive bit */
  BIT(previouslypending); /* this transfer WAS in the multi->pending queue */
  BIT(cookie_engine);
};


/*
 * This 'DynamicStatic' struct defines dynamic states that actually change
 * values in the 'UserDefined' area, which MUST be taken into consideration
 * if the UserDefined struct is cloned or similar. You can probably just
 * copy these, but each one indicate a special action on other data.
 */

struct DynamicStatic {
  char *url;        /* work URL, copied from UserDefined */
  char *referer;    /* referer string */
  struct curl_slist *cookielist; /* list of cookie files set by
                                    curl_easy_setopt(COOKIEFILE) calls */
  struct curl_slist *resolve; /* set to point to the set.resolve list when
                                 this should be dealt with in pretransfer */
  BIT(url_alloc);   /* URL string is malloc()'ed */
  BIT(referer_alloc); /* referer string is malloc()ed */
  BIT(wildcard_resolve); /* Set to true if any resolve change is a
                              wildcard */
};

/*
 * This 'UserDefined' struct must only contain data that is set once to go
 * for many (perhaps) independent connections. Values that are generated or
 * calculated internally for the "session handle" MUST be defined within the
 * 'struct UrlState' instead. The only exceptions MUST note the changes in







|
|



<
|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<


|
<







1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477

1478
1479














1480
1481
1482

1483
1484
1485
1486
1487
1488
1489
  BIT(wildcardmatch); /* enable wildcard matching */
  BIT(expect100header);  /* TRUE if we added Expect: 100-continue */
  BIT(disableexpect);    /* TRUE if Expect: is disabled due to a previous
                            417 response */
  BIT(use_range);
  BIT(rangestringalloc); /* the range string is malloc()'ed */
  BIT(done); /* set to FALSE when Curl_init_do() is called and set to TRUE
                when multi_done() is called, to prevent multi_done() to get
                invoked twice when the multi interface is used. */
  BIT(stream_depends_e); /* set or don't set the Exclusive bit */
  BIT(previouslypending); /* this transfer WAS in the multi->pending queue */
  BIT(cookie_engine);

  BIT(prefer_ascii);   /* ASCII rather than binary */
  BIT(list_only);      /* list directory contents */














  BIT(url_alloc);   /* URL string is malloc()'ed */
  BIT(referer_alloc); /* referer string is malloc()ed */
  BIT(wildcard_resolve); /* Set to true if any resolve change is a wildcard */

};

/*
 * This 'UserDefined' struct must only contain data that is set once to go
 * for many (perhaps) independent connections. Values that are generated or
 * calculated internally for the "session handle" MUST be defined within the
 * 'struct UrlState' instead. The only exceptions MUST note the changes in
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
 * null terminated strings MUST be added to the enumeration immediately
 * before STRING_LASTZEROTERMINATED, binary fields immediately before
 * STRING_LAST. When doing so, ensure that the packages/OS400/chkstring.c
 * test is updated and applicable changes for EBCDIC to ASCII conversion
 * are catered for in curl_easy_setopt_ccsid()
 */
enum dupstring {
  STRING_CERT_ORIG,       /* client certificate file name */
  STRING_CERT_PROXY,      /* client certificate file name */
  STRING_CERT_TYPE_ORIG,  /* format for certificate (default: PEM)*/
  STRING_CERT_TYPE_PROXY, /* format for certificate (default: PEM)*/
  STRING_COOKIE,          /* HTTP cookie string to send */
  STRING_COOKIEJAR,       /* dump all cookies to this file */
  STRING_CUSTOMREQUEST,   /* HTTP/FTP/RTSP request/method to use */
  STRING_DEFAULT_PROTOCOL, /* Protocol to use when the URL doesn't specify */
  STRING_DEVICE,          /* local network interface/address to use */
  STRING_ENCODING,        /* Accept-Encoding string */
  STRING_FTP_ACCOUNT,     /* ftp account data */
  STRING_FTP_ALTERNATIVE_TO_USER, /* command to send if USER/PASS fails */
  STRING_FTPPORT,         /* port to send with the FTP PORT command */
  STRING_KEY_ORIG,        /* private key file name */
  STRING_KEY_PROXY,       /* private key file name */
  STRING_KEY_PASSWD_ORIG, /* plain text private key password */
  STRING_KEY_PASSWD_PROXY, /* plain text private key password */
  STRING_KEY_TYPE_ORIG,   /* format for private key (default: PEM) */
  STRING_KEY_TYPE_PROXY,  /* format for private key (default: PEM) */
  STRING_KRB_LEVEL,       /* krb security level */
  STRING_NETRC_FILE,      /* if not NULL, use this instead of trying to find
                             $HOME/.netrc */
  STRING_PROXY,           /* proxy to use */
  STRING_PRE_PROXY,       /* pre socks proxy to use */
  STRING_SET_RANGE,       /* range, if used */
  STRING_SET_REFERER,     /* custom string for the HTTP referer field */
  STRING_SET_URL,         /* what original URL to work on */
  STRING_SSL_CAPATH_ORIG, /* CA directory name (doesn't work on windows) */
  STRING_SSL_CAPATH_PROXY, /* CA directory name (doesn't work on windows) */
  STRING_SSL_CAFILE_ORIG, /* certificate file to verify peer against */
  STRING_SSL_CAFILE_PROXY, /* certificate file to verify peer against */
  STRING_SSL_PINNEDPUBLICKEY_ORIG, /* public key file to verify peer against */
  STRING_SSL_PINNEDPUBLICKEY_PROXY, /* public key file to verify proxy */
  STRING_SSL_CIPHER_LIST_ORIG, /* list of ciphers to use */
  STRING_SSL_CIPHER_LIST_PROXY, /* list of ciphers to use */
  STRING_SSL_CIPHER13_LIST_ORIG, /* list of TLS 1.3 ciphers to use */
  STRING_SSL_CIPHER13_LIST_PROXY, /* list of TLS 1.3 ciphers to use */
  STRING_SSL_EGDSOCKET,   /* path to file containing the EGD daemon socket */
  STRING_SSL_RANDOM_FILE, /* path to file containing "random" data */
  STRING_USERAGENT,       /* User-Agent string */
  STRING_SSL_CRLFILE_ORIG, /* crl file to check certificate */
  STRING_SSL_CRLFILE_PROXY, /* crl file to check certificate */
  STRING_SSL_ISSUERCERT_ORIG, /* issuer cert file to check certificate */
  STRING_SSL_ISSUERCERT_PROXY, /* issuer cert file to check certificate */
  STRING_SSL_ENGINE,      /* name of ssl engine */
  STRING_USERNAME,        /* <username>, if used */
  STRING_PASSWORD,        /* <password>, if used */
  STRING_OPTIONS,         /* <options>, if used */
  STRING_PROXYUSERNAME,   /* Proxy <username>, if used */
  STRING_PROXYPASSWORD,   /* Proxy <password>, if used */
  STRING_NOPROXY,         /* List of hosts which should not use the proxy, if
                             used */
  STRING_RTSP_SESSION_ID, /* Session ID to use */
  STRING_RTSP_STREAM_URI, /* Stream URI for this request */
  STRING_RTSP_TRANSPORT,  /* Transport for this session */
  STRING_SSH_PRIVATE_KEY, /* path to the private key file for auth */
  STRING_SSH_PUBLIC_KEY,  /* path to the public key file for auth */
  STRING_SSH_HOST_PUBLIC_KEY_MD5, /* md5 of host public key in ascii hex */
  STRING_SSH_KNOWNHOSTS,  /* file name of knownhosts file */
  STRING_PROXY_SERVICE_NAME, /* Proxy service name */
  STRING_SERVICE_NAME,    /* Service name */
  STRING_MAIL_FROM,
  STRING_MAIL_AUTH,
  STRING_TLSAUTH_USERNAME_ORIG,  /* TLS auth <username> */
  STRING_TLSAUTH_USERNAME_PROXY, /* TLS auth <username> */
  STRING_TLSAUTH_PASSWORD_ORIG,  /* TLS auth <password> */
  STRING_TLSAUTH_PASSWORD_PROXY, /* TLS auth <password> */
  STRING_BEARER,                /* <bearer>, if used */
  STRING_UNIX_SOCKET_PATH,      /* path to Unix socket, if used */
  STRING_TARGET,                /* CURLOPT_REQUEST_TARGET */
  STRING_DOH,                   /* CURLOPT_DOH_URL */
  STRING_ALTSVC,                /* CURLOPT_ALTSVC */
  STRING_HSTS,                  /* CURLOPT_HSTS */







|

|










|

|

|









|

|

|

|

|




|

|




















|

|







1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
 * null terminated strings MUST be added to the enumeration immediately
 * before STRING_LASTZEROTERMINATED, binary fields immediately before
 * STRING_LAST. When doing so, ensure that the packages/OS400/chkstring.c
 * test is updated and applicable changes for EBCDIC to ASCII conversion
 * are catered for in curl_easy_setopt_ccsid()
 */
enum dupstring {
  STRING_CERT,            /* client certificate file name */
  STRING_CERT_PROXY,      /* client certificate file name */
  STRING_CERT_TYPE,       /* format for certificate (default: PEM)*/
  STRING_CERT_TYPE_PROXY, /* format for certificate (default: PEM)*/
  STRING_COOKIE,          /* HTTP cookie string to send */
  STRING_COOKIEJAR,       /* dump all cookies to this file */
  STRING_CUSTOMREQUEST,   /* HTTP/FTP/RTSP request/method to use */
  STRING_DEFAULT_PROTOCOL, /* Protocol to use when the URL doesn't specify */
  STRING_DEVICE,          /* local network interface/address to use */
  STRING_ENCODING,        /* Accept-Encoding string */
  STRING_FTP_ACCOUNT,     /* ftp account data */
  STRING_FTP_ALTERNATIVE_TO_USER, /* command to send if USER/PASS fails */
  STRING_FTPPORT,         /* port to send with the FTP PORT command */
  STRING_KEY,             /* private key file name */
  STRING_KEY_PROXY,       /* private key file name */
  STRING_KEY_PASSWD,      /* plain text private key password */
  STRING_KEY_PASSWD_PROXY, /* plain text private key password */
  STRING_KEY_TYPE,        /* format for private key (default: PEM) */
  STRING_KEY_TYPE_PROXY,  /* format for private key (default: PEM) */
  STRING_KRB_LEVEL,       /* krb security level */
  STRING_NETRC_FILE,      /* if not NULL, use this instead of trying to find
                             $HOME/.netrc */
  STRING_PROXY,           /* proxy to use */
  STRING_PRE_PROXY,       /* pre socks proxy to use */
  STRING_SET_RANGE,       /* range, if used */
  STRING_SET_REFERER,     /* custom string for the HTTP referer field */
  STRING_SET_URL,         /* what original URL to work on */
  STRING_SSL_CAPATH,      /* CA directory name (doesn't work on windows) */
  STRING_SSL_CAPATH_PROXY, /* CA directory name (doesn't work on windows) */
  STRING_SSL_CAFILE,      /* certificate file to verify peer against */
  STRING_SSL_CAFILE_PROXY, /* certificate file to verify peer against */
  STRING_SSL_PINNEDPUBLICKEY, /* public key file to verify peer against */
  STRING_SSL_PINNEDPUBLICKEY_PROXY, /* public key file to verify proxy */
  STRING_SSL_CIPHER_LIST, /* list of ciphers to use */
  STRING_SSL_CIPHER_LIST_PROXY, /* list of ciphers to use */
  STRING_SSL_CIPHER13_LIST, /* list of TLS 1.3 ciphers to use */
  STRING_SSL_CIPHER13_LIST_PROXY, /* list of TLS 1.3 ciphers to use */
  STRING_SSL_EGDSOCKET,   /* path to file containing the EGD daemon socket */
  STRING_SSL_RANDOM_FILE, /* path to file containing "random" data */
  STRING_USERAGENT,       /* User-Agent string */
  STRING_SSL_CRLFILE,     /* crl file to check certificate */
  STRING_SSL_CRLFILE_PROXY, /* crl file to check certificate */
  STRING_SSL_ISSUERCERT, /* issuer cert file to check certificate */
  STRING_SSL_ISSUERCERT_PROXY, /* issuer cert file to check certificate */
  STRING_SSL_ENGINE,      /* name of ssl engine */
  STRING_USERNAME,        /* <username>, if used */
  STRING_PASSWORD,        /* <password>, if used */
  STRING_OPTIONS,         /* <options>, if used */
  STRING_PROXYUSERNAME,   /* Proxy <username>, if used */
  STRING_PROXYPASSWORD,   /* Proxy <password>, if used */
  STRING_NOPROXY,         /* List of hosts which should not use the proxy, if
                             used */
  STRING_RTSP_SESSION_ID, /* Session ID to use */
  STRING_RTSP_STREAM_URI, /* Stream URI for this request */
  STRING_RTSP_TRANSPORT,  /* Transport for this session */
  STRING_SSH_PRIVATE_KEY, /* path to the private key file for auth */
  STRING_SSH_PUBLIC_KEY,  /* path to the public key file for auth */
  STRING_SSH_HOST_PUBLIC_KEY_MD5, /* md5 of host public key in ascii hex */
  STRING_SSH_KNOWNHOSTS,  /* file name of knownhosts file */
  STRING_PROXY_SERVICE_NAME, /* Proxy service name */
  STRING_SERVICE_NAME,    /* Service name */
  STRING_MAIL_FROM,
  STRING_MAIL_AUTH,
  STRING_TLSAUTH_USERNAME,  /* TLS auth <username> */
  STRING_TLSAUTH_USERNAME_PROXY, /* TLS auth <username> */
  STRING_TLSAUTH_PASSWORD,  /* TLS auth <password> */
  STRING_TLSAUTH_PASSWORD_PROXY, /* TLS auth <password> */
  STRING_BEARER,                /* <bearer>, if used */
  STRING_UNIX_SOCKET_PATH,      /* path to Unix socket, if used */
  STRING_TARGET,                /* CURLOPT_REQUEST_TARGET */
  STRING_DOH,                   /* CURLOPT_DOH_URL */
  STRING_ALTSVC,                /* CURLOPT_ALTSVC */
  STRING_HSTS,                  /* CURLOPT_HSTS */
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610

  STRING_AWS_SIGV4, /* Parameters for V4 signature */

  STRING_LAST /* not used, just an end-of-list marker */
};

enum dupblob {
  BLOB_CERT_ORIG,
  BLOB_CERT_PROXY,
  BLOB_KEY_ORIG,
  BLOB_KEY_PROXY,
  BLOB_SSL_ISSUERCERT_ORIG,
  BLOB_SSL_ISSUERCERT_PROXY,
  BLOB_LAST
};

/* callback that gets called when this easy handle is completed within a multi
   handle.  Only used for internally created transfers, like for example
   DoH. */







|

|

|







1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610

  STRING_AWS_SIGV4, /* Parameters for V4 signature */

  STRING_LAST /* not used, just an end-of-list marker */
};

enum dupblob {
  BLOB_CERT,
  BLOB_CERT_PROXY,
  BLOB_KEY,
  BLOB_KEY_PROXY,
  BLOB_SSL_ISSUERCERT,
  BLOB_SSL_ISSUERCERT_PROXY,
  BLOB_LAST
};

/* callback that gets called when this easy handle is completed within a multi
   handle.  Only used for internally created transfers, like for example
   DoH. */
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
  void *in_set;      /* CURLOPT_READDATA */
  void *writeheader; /* write the header to this if non-NULL */
  void *rtp_out;     /* write RTP to this if non-NULL */
  long use_port;     /* which port to use (when not using default) */
  unsigned long httpauth;  /* kind of HTTP authentication to use (bitmask) */
  unsigned long proxyauth; /* kind of proxy authentication to use (bitmask) */
  unsigned long socks5auth;/* kind of SOCKS5 authentication to use (bitmask) */
  long followlocation; /* as in HTTP Location: */
  long maxredirs;    /* maximum no. of http(s) redirects to follow, set to -1
                        for infinity */

  int keep_post;     /* keep POSTs as POSTs after a 30x request; each
                        bit represents a request, from 301 to 303 */
  void *postfields;  /* if POST, set the fields' values here */
  curl_seek_callback seek_func;      /* function that seeks the input */







<







1621
1622
1623
1624
1625
1626
1627

1628
1629
1630
1631
1632
1633
1634
  void *in_set;      /* CURLOPT_READDATA */
  void *writeheader; /* write the header to this if non-NULL */
  void *rtp_out;     /* write RTP to this if non-NULL */
  long use_port;     /* which port to use (when not using default) */
  unsigned long httpauth;  /* kind of HTTP authentication to use (bitmask) */
  unsigned long proxyauth; /* kind of proxy authentication to use (bitmask) */
  unsigned long socks5auth;/* kind of SOCKS5 authentication to use (bitmask) */

  long maxredirs;    /* maximum no. of http(s) redirects to follow, set to -1
                        for infinity */

  int keep_post;     /* keep POSTs as POSTs after a 30x request; each
                        bit represents a request, from 301 to 303 */
  void *postfields;  /* if POST, set the fields' values here */
  curl_seek_callback seek_func;      /* function that seeks the input */
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
  struct curl_slist *resolve;     /* list of names to add/remove from
                                     DNS cache */
  struct curl_slist *connect_to; /* list of host:port mappings to override
                                    the hostname and port to connect to */
  curl_TimeCond timecondition; /* kind of time/date comparison */
  curl_proxytype proxytype; /* what kind of proxy that is in use */
  time_t timevalue;       /* what time to compare with */
#if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_MQTT)
  Curl_HttpReq method;   /* what kind of HTTP request (if any) is this */
#endif
  long httpversion; /* when non-zero, a specific HTTP version requested to
                       be used in the library's request(s) */
  struct ssl_config_data ssl;  /* user defined SSL stuff */
#ifndef CURL_DISABLE_PROXY
  struct ssl_config_data proxy_ssl;  /* user defined SSL stuff for proxy */
#endif
  struct ssl_general_config general_ssl; /* general user defined SSL stuff */
  long dns_cache_timeout; /* DNS cache timeout */
  long buffer_size;      /* size of receive buffer to use */







<

<
|
|







1703
1704
1705
1706
1707
1708
1709

1710

1711
1712
1713
1714
1715
1716
1717
1718
1719
  struct curl_slist *resolve;     /* list of names to add/remove from
                                     DNS cache */
  struct curl_slist *connect_to; /* list of host:port mappings to override
                                    the hostname and port to connect to */
  curl_TimeCond timecondition; /* kind of time/date comparison */
  curl_proxytype proxytype; /* what kind of proxy that is in use */
  time_t timevalue;       /* what time to compare with */

  Curl_HttpReq method;   /* what kind of HTTP request (if any) is this */

  unsigned char httpwant; /* when non-zero, a specific HTTP version requested
                             to be used in the library's request(s) */
  struct ssl_config_data ssl;  /* user defined SSL stuff */
#ifndef CURL_DISABLE_PROXY
  struct ssl_config_data proxy_ssl;  /* user defined SSL stuff for proxy */
#endif
  struct ssl_general_config general_ssl; /* general user defined SSL stuff */
  long dns_cache_timeout; /* DNS cache timeout */
  long buffer_size;      /* size of receive buffer to use */
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811

/* Here follows boolean settings that define how to behave during
   this session. They are STATIC, set by libcurl users or at least initially
   and they don't change during operations. */
  BIT(get_filetime);     /* get the time and get of the remote file */
  BIT(tunnel_thru_httpproxy); /* use CONNECT through a HTTP proxy */
  BIT(prefer_ascii);     /* ASCII rather than binary */
  BIT(ftp_append);       /* append, not overwrite, on upload */
  BIT(ftp_list_only);    /* switch FTP command for listing directories */
#ifndef CURL_DISABLE_FTP
  BIT(ftp_use_port);     /* use the FTP PORT command */
  BIT(ftp_use_epsv);     /* if EPSV is to be attempted or not */
  BIT(ftp_use_eprt);     /* if EPRT is to be attempted or not */
  BIT(ftp_use_pret);     /* if PRET is to be used before PASV or not */
  BIT(ftp_skip_ip);      /* skip the IP address the FTP server passes on to
                            us */







|
|







1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808

/* Here follows boolean settings that define how to behave during
   this session. They are STATIC, set by libcurl users or at least initially
   and they don't change during operations. */
  BIT(get_filetime);     /* get the time and get of the remote file */
  BIT(tunnel_thru_httpproxy); /* use CONNECT through a HTTP proxy */
  BIT(prefer_ascii);     /* ASCII rather than binary */
  BIT(remote_append);    /* append, not overwrite, on upload */
  BIT(list_only);        /* list directory */
#ifndef CURL_DISABLE_FTP
  BIT(ftp_use_port);     /* use the FTP PORT command */
  BIT(ftp_use_epsv);     /* if EPSV is to be attempted or not */
  BIT(ftp_use_eprt);     /* if EPRT is to be attempted or not */
  BIT(ftp_use_pret);     /* if PRET is to be used before PASV or not */
  BIT(ftp_skip_ip);      /* skip the IP address the FTP server passes on to
                            us */
1854
1855
1856
1857
1858
1859
1860



1861
1862
1863
1864
1865
1866
1867
  BIT(stream_depends_e); /* set or don't set the Exclusive bit */
  BIT(haproxyprotocol); /* whether to send HAProxy PROXY protocol v1
                           header */
  BIT(abstract_unix_socket);
  BIT(disallow_username_in_url); /* disallow username in url */
  BIT(doh); /* DNS-over-HTTPS enabled */
  BIT(doh_get); /* use GET for DoH requests, instead of POST */



  BIT(http09_allowed); /* allow HTTP/0.9 responses */
  BIT(mail_rcpt_allowfails); /* allow RCPT TO command to fail for some
                                recipients */
};

struct Names {
  struct Curl_hash *hostcache;







>
>
>







1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
  BIT(stream_depends_e); /* set or don't set the Exclusive bit */
  BIT(haproxyprotocol); /* whether to send HAProxy PROXY protocol v1
                           header */
  BIT(abstract_unix_socket);
  BIT(disallow_username_in_url); /* disallow username in url */
  BIT(doh); /* DNS-over-HTTPS enabled */
  BIT(doh_get); /* use GET for DoH requests, instead of POST */
  BIT(doh_verifypeer);     /* DOH certificate peer verification */
  BIT(doh_verifyhost);     /* DOH certificate hostname verification */
  BIT(doh_verifystatus);   /* DOH certificate status verification */
  BIT(http09_allowed); /* allow HTTP/0.9 responses */
  BIT(mail_rcpt_allowfails); /* allow RCPT TO command to fail for some
                                recipients */
};

struct Names {
  struct Curl_hash *hostcache;
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
  struct Curl_message msg; /* A single posted message. */

  /* Array with the plain socket numbers this handle takes care of, in no
     particular order. Note that all sockets are added to the sockhash, where
     the state etc are also kept. This array is mostly used to detect when a
     socket is to be removed from the hash. See singlesocket(). */
  curl_socket_t sockets[MAX_SOCKSPEREASYHANDLE];
  int actions[MAX_SOCKSPEREASYHANDLE]; /* action for each socket in
                                          sockets[] */
  int numsocks;

  struct Names dns;
  struct Curl_multi *multi;    /* if non-NULL, points to the multi handle
                                  struct to which this "belongs" when used by
                                  the multi interface */
  struct Curl_multi *multi_easy; /* if non-NULL, points to the multi handle
                                    struct to which this "belongs" when used
                                    by the easy interface */
  struct Curl_share *share;    /* Share, handles global variable mutexing */
#ifdef USE_LIBPSL
  struct PslCache *psl;        /* The associated PSL cache. */
#endif
  struct SingleRequest req;    /* Request-specific data */
  struct UserDefined set;      /* values set by the libcurl user */
  struct DynamicStatic change; /* possibly modified userdefined data */
  struct CookieInfo *cookies;  /* the cookies, read from files and servers.
                                  NOTE that the 'cookie' field in the
                                  UserDefined struct defines if the "engine"
                                  is to be used or not. */
#ifdef USE_HSTS
  struct hsts *hsts;
#endif







|
|















<







1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924

1925
1926
1927
1928
1929
1930
1931
  struct Curl_message msg; /* A single posted message. */

  /* Array with the plain socket numbers this handle takes care of, in no
     particular order. Note that all sockets are added to the sockhash, where
     the state etc are also kept. This array is mostly used to detect when a
     socket is to be removed from the hash. See singlesocket(). */
  curl_socket_t sockets[MAX_SOCKSPEREASYHANDLE];
  unsigned char actions[MAX_SOCKSPEREASYHANDLE]; /* action for each socket in
                                                    sockets[] */
  int numsocks;

  struct Names dns;
  struct Curl_multi *multi;    /* if non-NULL, points to the multi handle
                                  struct to which this "belongs" when used by
                                  the multi interface */
  struct Curl_multi *multi_easy; /* if non-NULL, points to the multi handle
                                    struct to which this "belongs" when used
                                    by the easy interface */
  struct Curl_share *share;    /* Share, handles global variable mutexing */
#ifdef USE_LIBPSL
  struct PslCache *psl;        /* The associated PSL cache. */
#endif
  struct SingleRequest req;    /* Request-specific data */
  struct UserDefined set;      /* values set by the libcurl user */

  struct CookieInfo *cookies;  /* the cookies, read from files and servers.
                                  NOTE that the 'cookie' field in the
                                  UserDefined struct defines if the "engine"
                                  is to be used or not. */
#ifdef USE_HSTS
  struct hsts *hsts;
#endif
Added jni/curl/lib/vauth/gsasl.c.






























































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2020 - 2021, Simon Josefsson, <simon@josefsson.org>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 * RFC5802 SCRAM-SHA-1 authentication
 *
 ***************************************************************************/

#include "curl_setup.h"

#ifdef USE_GSASL

#include <curl/curl.h>

#include "curl_base64.h"
#include "vauth/vauth.h"
#include "urldata.h"
#include "sendf.h"

#include <gsasl.h>

/* The last #include files should be: */
#include "curl_memory.h"
#include "memdebug.h"

bool Curl_auth_gsasl_is_supported(struct Curl_easy *data,
                                  const char *mech,
                                  struct gsasldata *gsasl)
{
  int res;

  res = gsasl_init(&gsasl->ctx);
  if(res != GSASL_OK) {
    failf(data, "gsasl init: %s\n", gsasl_strerror(res));
    return FALSE;
  }

  res = gsasl_client_start(gsasl->ctx, mech, &gsasl->client);
  if(res != GSASL_OK) {
    gsasl_done(gsasl->ctx);
    return FALSE;
  }

  return true;
}

CURLcode Curl_auth_gsasl_start(struct Curl_easy *data,
                               const char *userp,
                               const char *passwdp,
                               struct gsasldata *gsasl)
{
#if GSASL_VERSION_NUMBER >= 0x010b00
  int res;
  res =
#endif
    gsasl_property_set(gsasl->client, GSASL_AUTHID, userp);
#if GSASL_VERSION_NUMBER >= 0x010b00
  if(res != GSASL_OK) {
    failf(data, "setting AUTHID failed: %s\n", gsasl_strerror(res));
    return CURLE_OUT_OF_MEMORY;
  }
#endif

#if GSASL_VERSION_NUMBER >= 0x010b00
  res =
#endif
    gsasl_property_set(gsasl->client, GSASL_PASSWORD, passwdp);
#if GSASL_VERSION_NUMBER >= 0x010b00
  if(res != GSASL_OK) {
    failf(data, "setting PASSWORD failed: %s\n", gsasl_strerror(res));
    return CURLE_OUT_OF_MEMORY;
  }
#endif

  (void)data;

  return CURLE_OK;
}

CURLcode Curl_auth_gsasl_token(struct Curl_easy *data,
                               const char *chlg64,
                               struct gsasldata *gsasl,
                               char **outptr, size_t *outlen)
{
  unsigned char *chlg = NULL;
  size_t chlglen = 0;
  CURLcode result = CURLE_OK;
  int res;
  char *response;

  if(chlg64) {
    result = Curl_base64_decode(chlg64, &chlg, &chlglen);
    if(result)
      return result;
  }

  res = gsasl_step(gsasl->client,
                   (const char *)chlg, chlglen, &response, outlen);
  if(res != GSASL_OK && res != GSASL_NEEDS_MORE) {
    if(chlg64)
      free(chlg);
    failf(data, "GSASL step: %s\n", gsasl_strerror(res));
    return CURLE_BAD_CONTENT_ENCODING;
  }

  if(*outlen > 0) {
    result = Curl_base64_encode(data, response, 0, outptr, outlen);
    gsasl_free(response);
  }
  else {
    *outptr = strdup("");
    if(!*outptr)
      result = CURLE_OUT_OF_MEMORY;
  }

  return result;
}

void Curl_auth_gsasl_cleanup(struct gsasldata *gsasl)
{
  gsasl_finish(gsasl->client);
  gsasl->client = NULL;

  gsasl_done(gsasl->ctx);
  gsasl->ctx = NULL;
}
#endif
Changes to jni/curl/lib/vauth/vauth.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_VAUTH_H
#define HEADER_CURL_VAUTH_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_VAUTH_H
#define HEADER_CURL_VAUTH_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2014 - 2021, Steve Holme, <steve_holme@hotmail.com>.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
37
38
39
40
41
42
43




44
45
46
47
48
49
50
#if defined(USE_KERBEROS5)
struct kerberos5data;
#endif

#if (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)) && defined(USE_SPNEGO)
struct negotiatedata;
#endif





#if defined(USE_WINDOWS_SSPI)
#define GSS_ERROR(status) ((status) & 0x80000000)
#endif

/* This is used to build a SPN string */
#if !defined(USE_WINDOWS_SSPI)







>
>
>
>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#if defined(USE_KERBEROS5)
struct kerberos5data;
#endif

#if (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)) && defined(USE_SPNEGO)
struct negotiatedata;
#endif

#if defined(USE_GSASL)
struct gsasldata;
#endif

#if defined(USE_WINDOWS_SSPI)
#define GSS_ERROR(status) ((status) & 0x80000000)
#endif

/* This is used to build a SPN string */
#if !defined(USE_WINDOWS_SSPI)
110
111
112
113
114
115
116





















117
118
119
120
121
122
123
                                              const unsigned char *uri,
                                              struct digestdata *digest,
                                              char **outptr, size_t *outlen);

/* This is used to clean up the digest specific data */
void Curl_auth_digest_cleanup(struct digestdata *digest);
#endif /* !CURL_DISABLE_CRYPTO_AUTH */






















#if defined(USE_NTLM)
/* This is used to evaluate if NTLM is supported */
bool Curl_auth_is_ntlm_supported(void);

/* This is used to generate a base64 encoded NTLM type-1 message */
CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
                                              const unsigned char *uri,
                                              struct digestdata *digest,
                                              char **outptr, size_t *outlen);

/* This is used to clean up the digest specific data */
void Curl_auth_digest_cleanup(struct digestdata *digest);
#endif /* !CURL_DISABLE_CRYPTO_AUTH */

#ifdef USE_GSASL
/* This is used to evaluate if MECH is supported by gsasl */
bool Curl_auth_gsasl_is_supported(struct Curl_easy *data,
                                  const char *mech,
                                  struct gsasldata *gsasl);
/* This is used to start a gsasl method */
CURLcode Curl_auth_gsasl_start(struct Curl_easy *data,
                               const char *userp,
                               const char *passwdp,
                               struct gsasldata *gsasl);

/* This is used to process and generate a new SASL token */
CURLcode Curl_auth_gsasl_token(struct Curl_easy *data,
                               const char *chlg64,
                               struct gsasldata *gsasl,
                               char **outptr, size_t *outlen);

/* This is used to clean up the gsasl specific data */
void Curl_auth_gsasl_cleanup(struct gsasldata *digest);
#endif

#if defined(USE_NTLM)
/* This is used to evaluate if NTLM is supported */
bool Curl_auth_is_ntlm_supported(void);

/* This is used to generate a base64 encoded NTLM type-1 message */
CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
Changes to jni/curl/lib/version.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 * curl_version() returns a pointer to a static buffer.
 *
 * It is implemented to work multi-threaded by making sure repeated invokes
 * generate the exact same string and never write any temporary data like
 * zeros in the data.
 */

#define VERSION_PARTS 15 /* number of substrings we can concatenate */

char *curl_version(void)
{
  static char out[300];
  char *outp;
  size_t outlen;
  const char *src[VERSION_PARTS];







|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 * curl_version() returns a pointer to a static buffer.
 *
 * It is implemented to work multi-threaded by making sure repeated invokes
 * generate the exact same string and never write any temporary data like
 * zeros in the data.
 */

#define VERSION_PARTS 16 /* number of substrings we can concatenate */

char *curl_version(void)
{
  static char out[300];
  char *outp;
  size_t outlen;
  const char *src[VERSION_PARTS];
143
144
145
146
147
148
149



150
151
152
153
154
155
156
#endif
#ifdef USE_LIBRTMP
  char rtmp_version[40];
#endif
#ifdef USE_HYPER
  char hyper_buf[30];
#endif



  int i = 0;
  int j;

#ifdef DEBUGBUILD
  /* Override version string when environment variable CURL_VERSION is set */
  const char *debugversion = getenv("CURL_VERSION");
  if(debugversion) {







>
>
>







143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#endif
#ifdef USE_LIBRTMP
  char rtmp_version[40];
#endif
#ifdef USE_HYPER
  char hyper_buf[30];
#endif
#ifdef USE_GSASL
  char gsasl_buf[30];
#endif
  int i = 0;
  int j;

#ifdef DEBUGBUILD
  /* Override version string when environment variable CURL_VERSION is set */
  const char *debugversion = getenv("CURL_VERSION");
  if(debugversion) {
231
232
233
234
235
236
237





238
239
240
241
242
243
244
    src[i++] = rtmp_version;
  }
#endif
#ifdef USE_HYPER
  msnprintf(hyper_buf, sizeof(hyper_buf), "Hyper/%s", hyper_version());
  src[i++] = hyper_buf;
#endif






  DEBUGASSERT(i <= VERSION_PARTS);

  outp = &out[0];
  outlen = sizeof(out);
  for(j = 0; j < i; j++) {
    size_t n = strlen(src[j]);







>
>
>
>
>







234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
    src[i++] = rtmp_version;
  }
#endif
#ifdef USE_HYPER
  msnprintf(hyper_buf, sizeof(hyper_buf), "Hyper/%s", hyper_version());
  src[i++] = hyper_buf;
#endif
#ifdef USE_GSASL
  msnprintf(gsasl_buf, sizeof(gsasl_buf), "libgsasl/%s",
            gsasl_check_version(NULL));
  src[i++] = gsasl_buf;
#endif

  DEBUGASSERT(i <= VERSION_PARTS);

  outp = &out[0];
  outlen = sizeof(out);
  for(j = 0; j < i; j++) {
    size_t n = strlen(src[j]);
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
#if defined(USE_SSH) && !defined(USE_WOLFSSH)
  "scp",
#endif
#ifdef USE_SSH
  "sftp",
#endif
#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \
   (CURL_SIZEOF_CURL_OFF_T > 4)
  "smb",
#  ifdef USE_SSL
  "smbs",
#  endif
#endif
#ifndef CURL_DISABLE_SMTP
  "smtp",







|







330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
#if defined(USE_SSH) && !defined(USE_WOLFSSH)
  "scp",
#endif
#ifdef USE_SSH
  "sftp",
#endif
#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \
   (SIZEOF_CURL_OFF_T > 4)
  "smb",
#  ifdef USE_SSL
  "smbs",
#  endif
#endif
#ifndef CURL_DISABLE_SMTP
  "smtp",
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
#endif
#ifdef CURLDEBUG
  | CURL_VERSION_CURLDEBUG
#endif
#ifdef CURLRES_ASYNCH
  | CURL_VERSION_ASYNCHDNS
#endif
#if (CURL_SIZEOF_CURL_OFF_T > 4) && \
    ( (SIZEOF_OFF_T > 4) || defined(USE_WIN32_LARGE_FILES) )
  | CURL_VERSION_LARGEFILE
#endif
#if defined(WIN32) && defined(UNICODE) && defined(_UNICODE)
  | CURL_VERSION_UNICODE
#endif
#if defined(CURL_DOES_CONVERSIONS)







|







395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
#endif
#ifdef CURLDEBUG
  | CURL_VERSION_CURLDEBUG
#endif
#ifdef CURLRES_ASYNCH
  | CURL_VERSION_ASYNCHDNS
#endif
#if (SIZEOF_CURL_OFF_T > 4) && \
    ( (SIZEOF_OFF_T > 4) || defined(USE_WIN32_LARGE_FILES) )
  | CURL_VERSION_LARGEFILE
#endif
#if defined(WIN32) && defined(UNICODE) && defined(_UNICODE)
  | CURL_VERSION_UNICODE
#endif
#if defined(CURL_DOES_CONVERSIONS)
426
427
428
429
430
431
432



433
434
435
436
437
438
439
  | CURL_VERSION_ZSTD
#endif
#ifndef CURL_DISABLE_ALTSVC
  | CURL_VERSION_ALTSVC
#endif
#if defined(USE_HSTS)
  | CURL_VERSION_HSTS



#endif
  ,
  NULL, /* ssl_version */
  0,    /* ssl_version_num, this is kept at zero */
  NULL, /* zlib_version */
  protocols,
  NULL, /* c-ares version */







>
>
>







434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
  | CURL_VERSION_ZSTD
#endif
#ifndef CURL_DISABLE_ALTSVC
  | CURL_VERSION_ALTSVC
#endif
#if defined(USE_HSTS)
  | CURL_VERSION_HSTS
#endif
#if defined(USE_GSASL)
  | CURL_VERSION_GSASL
#endif
  ,
  NULL, /* ssl_version */
  0,    /* ssl_version_num, this is kept at zero */
  NULL, /* zlib_version */
  protocols,
  NULL, /* c-ares version */
Changes to jni/curl/lib/vquic/ngtcp2.c.
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
static int cb_recv_stream_data(ngtcp2_conn *tconn, uint32_t flags,
                               int64_t stream_id, uint64_t offset,
                               const uint8_t *buf, size_t buflen,
                               void *user_data, void *stream_user_data)
{
  struct quicsocket *qs = (struct quicsocket *)user_data;
  ssize_t nconsumed;
  int fin = flags & NGTCP2_STREAM_DATA_FLAG_FIN ? 1 : 0;
  (void)offset;
  (void)stream_user_data;

  nconsumed =
    nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin);
  if(nconsumed < 0) {
    return NGTCP2_ERR_CALLBACK_FAILURE;







|







576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
static int cb_recv_stream_data(ngtcp2_conn *tconn, uint32_t flags,
                               int64_t stream_id, uint64_t offset,
                               const uint8_t *buf, size_t buflen,
                               void *user_data, void *stream_user_data)
{
  struct quicsocket *qs = (struct quicsocket *)user_data;
  ssize_t nconsumed;
  int fin = (flags & NGTCP2_STREAM_DATA_FLAG_FIN) ? 1 : 0;
  (void)offset;
  (void)stream_user_data;

  nconsumed =
    nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin);
  if(nconsumed < 0) {
    return NGTCP2_ERR_CALLBACK_FAILURE;
735
736
737
738
739
740
741
742



743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
  NULL, /* extend_max_remote_streams_bidi */
  NULL, /* extend_max_remote_streams_uni */
  cb_extend_max_stream_data,
  NULL, /* dcid_status */
  NULL, /* handshake_confirmed */
  NULL, /* recv_new_token */
  ngtcp2_crypto_delete_crypto_aead_ctx_cb,
  ngtcp2_crypto_delete_crypto_cipher_ctx_cb



};

/*
 * Might be called twice for happy eyeballs.
 */
CURLcode Curl_quic_connect(struct Curl_easy *data,
                           struct connectdata *conn,
                           curl_socket_t sockfd,
                           int sockindex,
                           const struct sockaddr *addr,
                           socklen_t addrlen)
{
  int rc;
  int rv;
  CURLcode result;
  ngtcp2_path path; /* TODO: this must be initialized properly */
  struct quicsocket *qs = &conn->hequic[sockindex];
  char ipbuf[40];
  long port;
  int qfd;

  if(qs->conn)
    Curl_quic_disconnect(data, conn, sockindex);
  qs->conn = conn;

  /* extract the used address as a string */
  if(!Curl_addr2string((struct sockaddr*)addr, addrlen, ipbuf, &port)) {
    char buffer[STRERROR_LEN];
    failf(data, "ssrem inet_ntop() failed with errno %d: %s",
          SOCKERRNO, Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
    return CURLE_BAD_FUNCTION_ARGUMENT;
  }

  infof(data, "Connect socket %d over QUIC to %s:%ld\n",
        sockfd, ipbuf, port);

  qs->version = NGTCP2_PROTO_VER_MAX;
#ifdef USE_OPENSSL
  qs->sslctx = quic_ssl_ctx(data);
  if(!qs->sslctx)
    return CURLE_QUIC_CONNECT_ERROR;







|
>
>
>


















|














|







735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
  NULL, /* extend_max_remote_streams_bidi */
  NULL, /* extend_max_remote_streams_uni */
  cb_extend_max_stream_data,
  NULL, /* dcid_status */
  NULL, /* handshake_confirmed */
  NULL, /* recv_new_token */
  ngtcp2_crypto_delete_crypto_aead_ctx_cb,
  ngtcp2_crypto_delete_crypto_cipher_ctx_cb,
  NULL, /* recv_datagram */
  NULL, /* ack_datagram */
  NULL  /* lost_datagram */
};

/*
 * Might be called twice for happy eyeballs.
 */
CURLcode Curl_quic_connect(struct Curl_easy *data,
                           struct connectdata *conn,
                           curl_socket_t sockfd,
                           int sockindex,
                           const struct sockaddr *addr,
                           socklen_t addrlen)
{
  int rc;
  int rv;
  CURLcode result;
  ngtcp2_path path; /* TODO: this must be initialized properly */
  struct quicsocket *qs = &conn->hequic[sockindex];
  char ipbuf[40];
  int port;
  int qfd;

  if(qs->conn)
    Curl_quic_disconnect(data, conn, sockindex);
  qs->conn = conn;

  /* extract the used address as a string */
  if(!Curl_addr2string((struct sockaddr*)addr, addrlen, ipbuf, &port)) {
    char buffer[STRERROR_LEN];
    failf(data, "ssrem inet_ntop() failed with errno %d: %s",
          SOCKERRNO, Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
    return CURLE_BAD_FUNCTION_ARGUMENT;
  }

  infof(data, "Connect socket %d over QUIC to %s:%d\n",
        sockfd, ipbuf, port);

  qs->version = NGTCP2_PROTO_VER_MAX;
#ifdef USE_OPENSSL
  qs->sslctx = quic_ssl_ctx(data);
  if(!qs->sslctx)
    return CURLE_QUIC_CONNECT_ERROR;
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
  qs->local_addrlen = sizeof(qs->local_addr);
  rv = getsockname(sockfd, (struct sockaddr *)&qs->local_addr,
                   &qs->local_addrlen);
  if(rv == -1)
    return CURLE_QUIC_CONNECT_ERROR;

  ngtcp2_addr_init(&path.local, (struct sockaddr *)&qs->local_addr,
                   qs->local_addrlen, NULL);
  ngtcp2_addr_init(&path.remote, addr, addrlen, NULL);

  rc = ngtcp2_conn_client_new(&qs->qconn, &qs->dcid, &qs->scid, &path,
                              NGTCP2_PROTO_VER_MIN, &ng_callbacks,
                              &qs->settings, &qs->transport_params, NULL, qs);
  if(rc)
    return CURLE_QUIC_CONNECT_ERROR;

  ngtcp2_conn_set_tls_native_handle(qs->qconn, qs->ssl);

  return CURLE_OK;
}

/*
 * Store ngtp2 version info in this buffer, Prefix with a space.  Return total
 * length written.
 */
int Curl_quic_ver(char *p, size_t len)
{
  ngtcp2_info *ng2 = ngtcp2_version(0);
  nghttp3_info *ht3 = nghttp3_version(0);
  return msnprintf(p, len, "ngtcp2/%s nghttp3/%s",
                   ng2->version_str, ht3->version_str);
}

static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
                      curl_socket_t *socks)







|
|


















|







806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
  qs->local_addrlen = sizeof(qs->local_addr);
  rv = getsockname(sockfd, (struct sockaddr *)&qs->local_addr,
                   &qs->local_addrlen);
  if(rv == -1)
    return CURLE_QUIC_CONNECT_ERROR;

  ngtcp2_addr_init(&path.local, (struct sockaddr *)&qs->local_addr,
                   qs->local_addrlen);
  ngtcp2_addr_init(&path.remote, addr, addrlen);

  rc = ngtcp2_conn_client_new(&qs->qconn, &qs->dcid, &qs->scid, &path,
                              NGTCP2_PROTO_VER_MIN, &ng_callbacks,
                              &qs->settings, &qs->transport_params, NULL, qs);
  if(rc)
    return CURLE_QUIC_CONNECT_ERROR;

  ngtcp2_conn_set_tls_native_handle(qs->qconn, qs->ssl);

  return CURLE_OK;
}

/*
 * Store ngtp2 version info in this buffer, Prefix with a space.  Return total
 * length written.
 */
int Curl_quic_ver(char *p, size_t len)
{
  const ngtcp2_info *ng2 = ngtcp2_version(0);
  nghttp3_info *ht3 = nghttp3_version(0);
  return msnprintf(p, len, "ngtcp2/%s nghttp3/%s",
                   ng2->version_str, ht3->version_str);
}

static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
                      curl_socket_t *socks)
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
/* this amount of data has now been acked on this stream */
static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
                                   size_t datalen, void *user_data,
                                   void *stream_user_data)
{
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.p.http;
  int rv;
  (void)user_data;

  if(!data->set.postfields) {
    stream->h3out->used -= datalen;
    H3BUGF(infof(data,
                 "cb_h3_acked_stream_data, %zd bytes, %zd left unacked\n",
                 datalen, stream->h3out->used));
    DEBUGASSERT(stream->h3out->used < H3_SEND_SIZE);

    if(stream->h3out->used == 0) {
      rv = nghttp3_conn_resume_stream(conn, stream_id);
      if(rv != 0) {
        return NGTCP2_ERR_CALLBACK_FAILURE;
      }
    }
  }
  return 0;
}







<










|







1290
1291
1292
1293
1294
1295
1296

1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
/* this amount of data has now been acked on this stream */
static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
                                   size_t datalen, void *user_data,
                                   void *stream_user_data)
{
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.p.http;

  (void)user_data;

  if(!data->set.postfields) {
    stream->h3out->used -= datalen;
    H3BUGF(infof(data,
                 "cb_h3_acked_stream_data, %zd bytes, %zd left unacked\n",
                 datalen, stream->h3out->used));
    DEBUGASSERT(stream->h3out->used < H3_SEND_SIZE);

    if(stream->h3out->used == 0) {
      int rv = nghttp3_conn_resume_stream(conn, stream_id);
      if(rv != 0) {
        return NGTCP2_ERR_CALLBACK_FAILURE;
      }
    }
  }
  return 0;
}
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
        break;

      failf(data, "ngtcp2: recvfrom() unexpectedly returned %zd", recvd);
      return CURLE_RECV_ERROR;
    }

    ngtcp2_addr_init(&path.local, (struct sockaddr *)&qs->local_addr,
                     qs->local_addrlen, NULL);
    ngtcp2_addr_init(&path.remote, (struct sockaddr *)&remote_addr,
                     remote_addrlen, NULL);

    rv = ngtcp2_conn_read_pkt(qs->qconn, &path, &pi, buf, recvd, ts);
    if(rv != 0) {
      /* TODO Send CONNECTION_CLOSE if possible */
      return CURLE_RECV_ERROR;
    }
  }







|

|







1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
        break;

      failf(data, "ngtcp2: recvfrom() unexpectedly returned %zd", recvd);
      return CURLE_RECV_ERROR;
    }

    ngtcp2_addr_init(&path.local, (struct sockaddr *)&qs->local_addr,
                     qs->local_addrlen);
    ngtcp2_addr_init(&path.remote, (struct sockaddr *)&remote_addr,
                     remote_addrlen);

    rv = ngtcp2_conn_read_pkt(qs->qconn, &path, &pi, buf, recvd, ts);
    if(rv != 0) {
      /* TODO Send CONNECTION_CLOSE if possible */
      return CURLE_RECV_ERROR;
    }
  }
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
          ngtcp2_strerror(rv));
    return CURLE_SEND_ERROR;
  }

  ngtcp2_path_storage_zero(&ps);

  for(;;) {
    outlen = -1;
    veccnt = 0;
    stream_id = -1;
    fin = 0;

    if(qs->h3conn && ngtcp2_conn_get_max_data_left(qs->qconn)) {
      veccnt = nghttp3_conn_writev_stream(qs->h3conn, &stream_id, &fin, vec,
                                          sizeof(vec) / sizeof(vec[0]));







<







1786
1787
1788
1789
1790
1791
1792

1793
1794
1795
1796
1797
1798
1799
          ngtcp2_strerror(rv));
    return CURLE_SEND_ERROR;
  }

  ngtcp2_path_storage_zero(&ps);

  for(;;) {

    veccnt = 0;
    stream_id = -1;
    fin = 0;

    if(qs->h3conn && ngtcp2_conn_get_max_data_left(qs->qconn)) {
      veccnt = nghttp3_conn_writev_stream(qs->h3conn, &stream_id, &fin, vec,
                                          sizeof(vec) / sizeof(vec[0]));
Changes to jni/curl/lib/vquic/quiche.c.
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
                           int sockindex,
                           const struct sockaddr *addr, socklen_t addrlen)
{
  CURLcode result;
  struct quicsocket *qs = &conn->hequic[sockindex];
  char *keylog_file = NULL;
  char ipbuf[40];
  long port;

#ifdef DEBUG_QUICHE
  /* initialize debug log callback only once */
  static int debug_log_init = 0;
  if(!debug_log_init) {
    quiche_enable_debug_logging(quiche_debug_log, NULL);
    debug_log_init = 1;







|







176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
                           int sockindex,
                           const struct sockaddr *addr, socklen_t addrlen)
{
  CURLcode result;
  struct quicsocket *qs = &conn->hequic[sockindex];
  char *keylog_file = NULL;
  char ipbuf[40];
  int port;

#ifdef DEBUG_QUICHE
  /* initialize debug log callback only once */
  static int debug_log_init = 0;
  if(!debug_log_init) {
    quiche_enable_debug_logging(quiche_debug_log, NULL);
    debug_log_init = 1;
355
356
357
358
359
360
361


362
363
364
365
366
367
368

static CURLcode process_ingress(struct Curl_easy *data, int sockfd,
                                struct quicsocket *qs)
{
  ssize_t recvd;
  uint8_t *buf = (uint8_t *)data->state.buffer;
  size_t bufsize = data->set.buffer_size;



  /* in case the timeout expired */
  quiche_conn_on_timeout(qs->conn);

  do {
    recvd = recv(sockfd, buf, bufsize, 0);
    if((recvd < 0) && ((SOCKERRNO == EAGAIN) || (SOCKERRNO == EWOULDBLOCK)))







>
>







355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370

static CURLcode process_ingress(struct Curl_easy *data, int sockfd,
                                struct quicsocket *qs)
{
  ssize_t recvd;
  uint8_t *buf = (uint8_t *)data->state.buffer;
  size_t bufsize = data->set.buffer_size;

  DEBUGASSERT(qs->conn);

  /* in case the timeout expired */
  quiche_conn_on_timeout(qs->conn);

  do {
    recvd = recv(sockfd, buf, bufsize, 0);
    if((recvd < 0) && ((SOCKERRNO == EAGAIN) || (SOCKERRNO == EWOULDBLOCK)))
Changes to jni/curl/lib/vssh/libssh.c.
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
          }
          else {
            data->state.resume_from = 0;
          }
        }
      }

      if(data->set.ftp_append)
        /* Try to open for append, but create if nonexisting */
        flags = O_WRONLY|O_CREAT|O_APPEND;
      else if(data->state.resume_from > 0)
        /* If we have restart position then open for append */
        flags = O_WRONLY|O_APPEND;
      else
        /* Clear file before writing (normal behavior) */







|







1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
          }
          else {
            data->state.resume_from = 0;
          }
        }
      }

      if(data->set.remote_append)
        /* Try to open for append, but create if nonexisting */
        flags = O_WRONLY|O_CREAT|O_APPEND;
      else if(data->state.resume_from > 0)
        /* If we have restart position then open for append */
        flags = O_WRONLY|O_APPEND;
      else
        /* Clear file before writing (normal behavior) */
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423

      sshc->readdir_attrs = sftp_readdir(sshc->sftp_session, sshc->sftp_dir);
      if(sshc->readdir_attrs) {
        sshc->readdir_filename = sshc->readdir_attrs->name;
        sshc->readdir_longentry = sshc->readdir_attrs->longname;
        sshc->readdir_len = strlen(sshc->readdir_filename);

        if(data->set.ftp_list_only) {
          char *tmpLine;

          tmpLine = aprintf("%s\n", sshc->readdir_filename);
          if(tmpLine == NULL) {
            state(data, SSH_SFTP_CLOSE);
            sshc->actualcode = CURLE_OUT_OF_MEMORY;
            break;







|







1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423

      sshc->readdir_attrs = sftp_readdir(sshc->sftp_session, sshc->sftp_dir);
      if(sshc->readdir_attrs) {
        sshc->readdir_filename = sshc->readdir_attrs->name;
        sshc->readdir_longentry = sshc->readdir_attrs->longname;
        sshc->readdir_len = strlen(sshc->readdir_filename);

        if(data->set.list_only) {
          char *tmpLine;

          tmpLine = aprintf("%s\n", sshc->readdir_filename);
          if(tmpLine == NULL) {
            state(data, SSH_SFTP_CLOSE);
            sshc->actualcode = CURLE_OUT_OF_MEMORY;
            break;
Changes to jni/curl/lib/vssh/libssh2.c.
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201

202
203
204
205
206
207
208
209
210
211
212
213
static void
kbd_callback(const char *name, int name_len, const char *instruction,
             int instruction_len, int num_prompts,
             const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts,
             LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses,
             void **abstract)
{
  struct connectdata *conn = (struct connectdata *)*abstract;

#ifdef CURL_LIBSSH2_DEBUG
  fprintf(stderr, "name=%s\n", name);
  fprintf(stderr, "name_len=%d\n", name_len);
  fprintf(stderr, "instruction=%s\n", instruction);
  fprintf(stderr, "instruction_len=%d\n", instruction_len);
  fprintf(stderr, "num_prompts=%d\n", num_prompts);
#else
  (void)name;
  (void)name_len;
  (void)instruction;
  (void)instruction_len;
#endif  /* CURL_LIBSSH2_DEBUG */
  if(num_prompts == 1) {

    responses[0].text = strdup(conn->passwd);
    responses[0].length = curlx_uztoui(strlen(conn->passwd));
  }
  (void)prompts;
  (void)abstract;
} /* kbd_callback */

static CURLcode sftp_libssh2_error_to_CURLE(unsigned long err)
{
  switch(err) {
    case LIBSSH2_FX_OK:
      return CURLE_OK;







|














>




<







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

207
208
209
210
211
212
213
static void
kbd_callback(const char *name, int name_len, const char *instruction,
             int instruction_len, int num_prompts,
             const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts,
             LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses,
             void **abstract)
{
  struct Curl_easy *data = (struct Curl_easy *)*abstract;

#ifdef CURL_LIBSSH2_DEBUG
  fprintf(stderr, "name=%s\n", name);
  fprintf(stderr, "name_len=%d\n", name_len);
  fprintf(stderr, "instruction=%s\n", instruction);
  fprintf(stderr, "instruction_len=%d\n", instruction_len);
  fprintf(stderr, "num_prompts=%d\n", num_prompts);
#else
  (void)name;
  (void)name_len;
  (void)instruction;
  (void)instruction_len;
#endif  /* CURL_LIBSSH2_DEBUG */
  if(num_prompts == 1) {
    struct connectdata *conn = data->conn;
    responses[0].text = strdup(conn->passwd);
    responses[0].length = curlx_uztoui(strlen(conn->passwd));
  }
  (void)prompts;

} /* kbd_callback */

static CURLcode sftp_libssh2_error_to_CURLE(unsigned long err)
{
  switch(err) {
    case LIBSSH2_FX_OK:
      return CURLE_OK;
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
              return CURLE_BAD_DOWNLOAD_RESUME;
            }
            data->state.resume_from = attrs.filesize;
          }
        }
      }

      if(data->set.ftp_append)
        /* Try to open for append, but create if nonexisting */
        flags = LIBSSH2_FXF_WRITE|LIBSSH2_FXF_CREAT|LIBSSH2_FXF_APPEND;
      else if(data->state.resume_from > 0)
        /* If we have restart position then open for append */
        flags = LIBSSH2_FXF_WRITE|LIBSSH2_FXF_APPEND;
      else
        /* Clear file before writing (normal behavior) */







|







1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
              return CURLE_BAD_DOWNLOAD_RESUME;
            }
            data->state.resume_from = attrs.filesize;
          }
        }
      }

      if(data->set.remote_append)
        /* Try to open for append, but create if nonexisting */
        flags = LIBSSH2_FXF_WRITE|LIBSSH2_FXF_CREAT|LIBSSH2_FXF_APPEND;
      else if(data->state.resume_from > 0)
        /* If we have restart position then open for append */
        flags = LIBSSH2_FXF_WRITE|LIBSSH2_FXF_APPEND;
      else
        /* Clear file before writing (normal behavior) */
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
      if(rc == LIBSSH2_ERROR_EAGAIN) {
        break;
      }
      if(rc > 0) {
        readdir_len = (size_t) rc;
        sshp->readdir_filename[readdir_len] = '\0';

        if(data->set.ftp_list_only) {
          result = Curl_client_write(data, CLIENTWRITE_BODY,
                                     sshp->readdir_filename,
                                     readdir_len);
          if(!result)
            result = Curl_client_write(data, CLIENTWRITE_BODY,
                                       (char *)"\n", 1);
          if(result) {







|







2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
      if(rc == LIBSSH2_ERROR_EAGAIN) {
        break;
      }
      if(rc > 0) {
        readdir_len = (size_t) rc;
        sshp->readdir_filename[readdir_len] = '\0';

        if(data->set.list_only) {
          result = Curl_client_write(data, CLIENTWRITE_BODY,
                                     sshp->readdir_filename,
                                     readdir_len);
          if(!result)
            result = Curl_client_write(data, CLIENTWRITE_BODY,
                                       (char *)"\n", 1);
          if(result) {
3155
3156
3157
3158
3159
3160
3161

3162
3163
3164
3165
3166
3167
3168

#ifdef HAVE_LIBSSH2_KNOWNHOST_API
  if(data->set.str[STRING_SSH_KNOWNHOSTS]) {
    int rc;
    sshc->kh = libssh2_knownhost_init(sshc->ssh_session);
    if(!sshc->kh) {
      libssh2_session_free(sshc->ssh_session);

      return CURLE_FAILED_INIT;
    }

    /* read all known hosts from there */
    rc = libssh2_knownhost_readfile(sshc->kh,
                                    data->set.str[STRING_SSH_KNOWNHOSTS],
                                    LIBSSH2_KNOWNHOST_FILE_OPENSSH);







>







3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169

#ifdef HAVE_LIBSSH2_KNOWNHOST_API
  if(data->set.str[STRING_SSH_KNOWNHOSTS]) {
    int rc;
    sshc->kh = libssh2_knownhost_init(sshc->ssh_session);
    if(!sshc->kh) {
      libssh2_session_free(sshc->ssh_session);
      sshc->ssh_session = NULL;
      return CURLE_FAILED_INIT;
    }

    /* read all known hosts from there */
    rc = libssh2_knownhost_readfile(sshc->kh,
                                    data->set.str[STRING_SSH_KNOWNHOSTS],
                                    LIBSSH2_KNOWNHOST_FILE_OPENSSH);
Changes to jni/curl/lib/vssh/wolfssh.c.
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
              return CURLE_BAD_DOWNLOAD_RESUME;
            }
            data->state.resume_from = size;
          }
        }
      }

      if(data->set.ftp_append)
        /* Try to open for append, but create if nonexisting */
        flags = WOLFSSH_FXF_WRITE|WOLFSSH_FXF_CREAT|WOLFSSH_FXF_APPEND;
      else if(data->state.resume_from > 0)
        /* If we have restart position then open for append */
        flags = WOLFSSH_FXF_WRITE|WOLFSSH_FXF_APPEND;
      else
        /* Clear file before writing (normal behavior) */







|







581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
              return CURLE_BAD_DOWNLOAD_RESUME;
            }
            data->state.resume_from = size;
          }
        }
      }

      if(data->set.remote_append)
        /* Try to open for append, but create if nonexisting */
        flags = WOLFSSH_FXF_WRITE|WOLFSSH_FXF_CREAT|WOLFSSH_FXF_APPEND;
      else if(data->state.resume_from > 0)
        /* If we have restart position then open for append */
        flags = WOLFSSH_FXF_WRITE|WOLFSSH_FXF_APPEND;
      else
        /* Clear file before writing (normal behavior) */
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
        return CURLE_OK;
      }
      else if(name && (rc == WS_SUCCESS)) {
        WS_SFTPNAME *origname = name;
        result = CURLE_OK;
        while(name) {
          char *line = aprintf("%s\n",
                               data->set.ftp_list_only ?
                               name->fName : name->lName);
          if(line == NULL) {
            state(data, SSH_SFTP_CLOSE);
            sshc->actualcode = CURLE_OUT_OF_MEMORY;
            break;
          }
          result = Curl_client_write(data, CLIENTWRITE_BODY,







|







855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
        return CURLE_OK;
      }
      else if(name && (rc == WS_SUCCESS)) {
        WS_SFTPNAME *origname = name;
        result = CURLE_OK;
        while(name) {
          char *line = aprintf("%s\n",
                               data->set.list_only ?
                               name->fName : name->lName);
          if(line == NULL) {
            state(data, SSH_SFTP_CLOSE);
            sshc->actualcode = CURLE_OUT_OF_MEMORY;
            break;
          }
          result = Curl_client_write(data, CLIENTWRITE_BODY,
Changes to jni/curl/lib/vtls/bearssl.c.
371
372
373
374
375
376
377
378

379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
  backend->x509.verifyhost = verifyhost;
  br_ssl_engine_set_x509(&backend->ctx.eng, &backend->x509.vtable);

  if(SSL_SET_OPTION(primary.sessionid)) {
    void *session;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, &session, NULL, sockindex)) {

      br_ssl_engine_set_session_parameters(&backend->ctx.eng, session);
      infof(data, "BearSSL: re-using session ID\n");
    }
    Curl_ssl_sessionid_unlock(data);
  }

  if(conn->bits.tls_enable_alpn) {
    int cur = 0;

    /* NOTE: when adding more protocols here, increase the size of the
     * protocols array in `struct ssl_backend_data`.
     */

#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
      && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
      ) {
      backend->protocols[cur++] = NGHTTP2_PROTO_VERSION_ID;
      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
    }







|
>














|







371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
  backend->x509.verifyhost = verifyhost;
  br_ssl_engine_set_x509(&backend->ctx.eng, &backend->x509.vtable);

  if(SSL_SET_OPTION(primary.sessionid)) {
    void *session;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
                              &session, NULL, sockindex)) {
      br_ssl_engine_set_session_parameters(&backend->ctx.eng, session);
      infof(data, "BearSSL: re-using session ID\n");
    }
    Curl_ssl_sessionid_unlock(data);
  }

  if(conn->bits.tls_enable_alpn) {
    int cur = 0;

    /* NOTE: when adding more protocols here, increase the size of the
     * protocols array in `struct ssl_backend_data`.
     */

#ifdef USE_NGHTTP2
    if(data->state.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
      && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
      ) {
      backend->protocols[cur++] = NGHTTP2_PROTO_VERSION_ID;
      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
    }
567
568
569
570
571
572
573

574
575
576
577


578
579
580
581
582
583
584

    session = malloc(sizeof(*session));
    if(!session)
      return CURLE_OUT_OF_MEMORY;
    br_ssl_engine_get_session_parameters(&backend->ctx.eng, session);
    Curl_ssl_sessionid_lock(data);
    incache = !(Curl_ssl_getsessionid(data, conn,

                                      &oldsession, NULL, sockindex));
    if(incache)
      Curl_ssl_delsessionid(data, oldsession);
    ret = Curl_ssl_addsessionid(data, conn, session, 0, sockindex);


    Curl_ssl_sessionid_unlock(data);
    if(ret) {
      free(session);
      return CURLE_OUT_OF_MEMORY;
    }
  }








>



|
>
>







568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588

    session = malloc(sizeof(*session));
    if(!session)
      return CURLE_OUT_OF_MEMORY;
    br_ssl_engine_get_session_parameters(&backend->ctx.eng, session);
    Curl_ssl_sessionid_lock(data);
    incache = !(Curl_ssl_getsessionid(data, conn,
                                      SSL_IS_PROXY() ? TRUE : FALSE,
                                      &oldsession, NULL, sockindex));
    if(incache)
      Curl_ssl_delsessionid(data, oldsession);
    ret = Curl_ssl_addsessionid(data, conn,
                                SSL_IS_PROXY() ? TRUE : FALSE,
                                session, 0, sockindex);
    Curl_ssl_sessionid_unlock(data);
    if(ret) {
      free(session);
      return CURLE_OUT_OF_MEMORY;
    }
  }

851
852
853
854
855
856
857

858
859
860
861
862
863
864
865
866
867
868
869
  Curl_none_check_cxn,
  Curl_none_shutdown,
  bearssl_data_pending,
  bearssl_random,
  Curl_none_cert_status_request,
  bearssl_connect,
  bearssl_connect_nonblocking,

  bearssl_get_internals,
  bearssl_close,
  Curl_none_close_all,
  bearssl_session_free,
  Curl_none_set_engine,
  Curl_none_set_engine_default,
  Curl_none_engines_list,
  Curl_none_false_start,
  bearssl_sha256sum
};

#endif /* USE_BEARSSL */







>












855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
  Curl_none_check_cxn,
  Curl_none_shutdown,
  bearssl_data_pending,
  bearssl_random,
  Curl_none_cert_status_request,
  bearssl_connect,
  bearssl_connect_nonblocking,
  Curl_ssl_getsock,
  bearssl_get_internals,
  bearssl_close,
  Curl_none_close_all,
  bearssl_session_free,
  Curl_none_set_engine,
  Curl_none_set_engine_default,
  Curl_none_engines_list,
  Curl_none_false_start,
  bearssl_sha256sum
};

#endif /* USE_BEARSSL */
Changes to jni/curl/lib/vtls/gskit.c.
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
    }
  }
  if(BACKEND->iocport >= 0)
    close_async_handshake(connssl);
}


static ssize_t gskit_send(struct connectdata *conn, int sockindex,
                          const void *mem, size_t len, CURLcode *curlcode)
{
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  CURLcode cc = CURLE_SEND_ERROR;
  int written;








|







606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
    }
  }
  if(BACKEND->iocport >= 0)
    close_async_handshake(connssl);
}


static ssize_t gskit_send(struct Curl_easy *data, int sockindex,
                          const void *mem, size_t len, CURLcode *curlcode)
{
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  CURLcode cc = CURLE_SEND_ERROR;
  int written;

696
697
698
699
700
701
702
703
704
705
706
707
708
709
710

static CURLcode gskit_connect_step1(struct Curl_easy *data,
                                    struct connectdata *conn, int sockindex)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  gsk_handle envir;
  CURLcode result;
  int rc;
  const char * const keyringfile = SSL_CONN_CONFIG(CAfile);
  const char * const keyringpwd = SSL_SET_OPTION(key_passwd);
  const char * const keyringlabel = SSL_SET_OPTION(primary.clientcert);
  const long int ssl_version = SSL_CONN_CONFIG(version);
  const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
  const char * const hostname = SSL_IS_PROXY()? conn->http_proxy.host.name:
    conn->host.name;







<







696
697
698
699
700
701
702

703
704
705
706
707
708
709

static CURLcode gskit_connect_step1(struct Curl_easy *data,
                                    struct connectdata *conn, int sockindex)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  gsk_handle envir;
  CURLcode result;

  const char * const keyringfile = SSL_CONN_CONFIG(CAfile);
  const char * const keyringpwd = SSL_SET_OPTION(key_passwd);
  const char * const keyringlabel = SSL_SET_OPTION(primary.clientcert);
  const long int ssl_version = SSL_CONN_CONFIG(version);
  const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
  const char * const hostname = SSL_IS_PROXY()? conn->http_proxy.host.name:
    conn->host.name;
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
      if(result)
        return result;
    }
  }

  /* Check pinned public key. */
  ptr = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
                         data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
  if(!result && ptr) {
    curl_X509certificate x509;
    curl_asn1Element *p;

    if(Curl_parseX509(&x509, cert, certend))
      return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
    p = &x509.subjectPublicKeyInfo;







|







1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
      if(result)
        return result;
    }
  }

  /* Check pinned public key. */
  ptr = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
  if(!result && ptr) {
    curl_X509certificate x509;
    curl_asn1Element *p;

    if(Curl_parseX509(&x509, cert, certend))
      return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
    p = &x509.subjectPublicKeyInfo;
Changes to jni/curl/lib/vtls/gtls.c.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "curl_setup.h"

#ifdef USE_GNUTLS

#include <gnutls/abstract.h>
#include <gnutls/gnutls.h>
#include <gnutls/x509.h>

#ifdef USE_GNUTLS_NETTLE
#include <gnutls/crypto.h>
#include <nettle/md5.h>
#include <nettle/sha2.h>
#else
#include <gcrypt.h>
#endif

#include "urldata.h"
#include "sendf.h"
#include "inet_pton.h"
#include "gtls.h"
#include "vtls.h"
#include "parsedate.h"







<
<

<

<
<
<







31
32
33
34
35
36
37


38

39



40
41
42
43
44
45
46
#include "curl_setup.h"

#ifdef USE_GNUTLS

#include <gnutls/abstract.h>
#include <gnutls/gnutls.h>
#include <gnutls/x509.h>


#include <gnutls/crypto.h>

#include <nettle/sha2.h>




#include "urldata.h"
#include "sendf.h"
#include "inet_pton.h"
#include "gtls.h"
#include "vtls.h"
#include "parsedate.h"
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
  }

  if(conn->bits.tls_enable_alpn) {
    int cur = 0;
    gnutls_datum_t protocols[2];

#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
       && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
       ) {
      protocols[cur].data = (unsigned char *)NGHTTP2_PROTO_VERSION_ID;
      protocols[cur].size = NGHTTP2_PROTO_VERSION_ID_LEN;
      cur++;







|







608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
  }

  if(conn->bits.tls_enable_alpn) {
    int cur = 0;
    gnutls_datum_t protocols[2];

#ifdef USE_NGHTTP2
    if(data->state.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
       && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
       ) {
      protocols[cur].data = (unsigned char *)NGHTTP2_PROTO_VERSION_ID;
      protocols[cur].size = NGHTTP2_PROTO_VERSION_ID_LEN;
      cur++;
729
730
731
732
733
734
735

736
737
738
739
740
741
742
     to speed up things */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid;
    size_t ssl_idsize;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn,

                              &ssl_sessionid, &ssl_idsize, sockindex)) {
      /* we got a session id, use it! */
      gnutls_session_set_data(session, ssl_sessionid, ssl_idsize);

      /* Informational message */
      infof(data, "SSL re-using session ID\n");
    }







>







723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
     to speed up things */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid;
    size_t ssl_idsize;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn,
                              SSL_IS_PROXY() ? TRUE : FALSE,
                              &ssl_sessionid, &ssl_idsize, sockindex)) {
      /* we got a session id, use it! */
      gnutls_session_set_data(session, ssl_sessionid, ssl_idsize);

      /* Informational message */
      infof(data, "SSL re-using session ID\n");
    }
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
        infof(data, "\t server certificate activation date FAILED\n");
    }
    else
      infof(data, "\t server certificate activation date OK\n");
  }

  ptr = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
        data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
  if(ptr) {
    result = pkp_pin_peer_pubkey(data, x509_cert, ptr);
    if(result != CURLE_OK) {
      failf(data, "SSL: public key does not match pinned public key!");
      gnutls_x509_crt_deinit(x509_cert);
      return result;
    }







|







1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
        infof(data, "\t server certificate activation date FAILED\n");
    }
    else
      infof(data, "\t server certificate activation date OK\n");
  }

  ptr = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
  if(ptr) {
    result = pkp_pin_peer_pubkey(data, x509_cert, ptr);
    if(result != CURLE_OK) {
      failf(data, "SSL: public key does not match pinned public key!");
      gnutls_x509_crt_deinit(x509_cert);
      return result;
    }
1288
1289
1290
1291
1292
1293
1294
1295

1296
1297
1298
1299
1300
1301
1302
1303
1304


1305
1306
1307
1308
1309
1310
1311
1312
      bool incache;
      void *ssl_sessionid;

      /* extract session ID to the allocated buffer */
      gnutls_session_get_data(session, connect_sessionid, &connect_idsize);

      Curl_ssl_sessionid_lock(data);
      incache = !(Curl_ssl_getsessionid(data, conn, &ssl_sessionid, NULL,

                                        sockindex));
      if(incache) {
        /* there was one before in the cache, so instead of risking that the
           previous one was rejected, we just kill that and store the new */
        Curl_ssl_delsessionid(data, ssl_sessionid);
      }

      /* store this session id */
      result = Curl_ssl_addsessionid(data, conn, connect_sessionid,


                                     connect_idsize, sockindex);
      Curl_ssl_sessionid_unlock(data);
      if(result) {
        free(connect_sessionid);
        result = CURLE_OUT_OF_MEMORY;
      }
    }
    else







|
>
|







|
>
>
|







1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
      bool incache;
      void *ssl_sessionid;

      /* extract session ID to the allocated buffer */
      gnutls_session_get_data(session, connect_sessionid, &connect_idsize);

      Curl_ssl_sessionid_lock(data);
      incache = !(Curl_ssl_getsessionid(data, conn,
                                        SSL_IS_PROXY() ? TRUE : FALSE,
                                        &ssl_sessionid, NULL, sockindex));
      if(incache) {
        /* there was one before in the cache, so instead of risking that the
           previous one was rejected, we just kill that and store the new */
        Curl_ssl_delsessionid(data, ssl_sessionid);
      }

      /* store this session id */
      result = Curl_ssl_addsessionid(data, conn,
                                     SSL_IS_PROXY() ? TRUE : FALSE,
                                     connect_sessionid, connect_idsize,
                                     sockindex);
      Curl_ssl_sessionid_unlock(data);
      if(result) {
        free(connect_sessionid);
        result = CURLE_OUT_OF_MEMORY;
      }
    }
    else
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
}

static size_t gtls_version(char *buffer, size_t size)
{
  return msnprintf(buffer, size, "GnuTLS/%s", gnutls_check_version(NULL));
}

#ifndef USE_GNUTLS_NETTLE
static int gtls_seed(struct Curl_easy *data)
{
  /* we have the "SSL is seeded" boolean static to prevent multiple
     time-consuming seedings in vain */
  static bool ssl_seeded = FALSE;

  /* Quickly add a bit of entropy */
  gcry_fast_random_poll();

  if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] ||
     data->set.str[STRING_SSL_EGDSOCKET]) {
    ssl_seeded = TRUE;
  }
  return 0;
}
#endif

/* data might be NULL! */
static CURLcode gtls_random(struct Curl_easy *data,
                            unsigned char *entropy, size_t length)
{
#if defined(USE_GNUTLS_NETTLE)
  int rc;
  (void)data;
  rc = gnutls_rnd(GNUTLS_RND_RANDOM, entropy, length);
  return rc?CURLE_FAILED_INIT:CURLE_OK;
#elif defined(USE_GNUTLS)
  if(data)
    gtls_seed(data); /* Initiate the seed if not already done */
  gcry_randomize(entropy, length, GCRY_STRONG_RANDOM);
#endif
  return CURLE_OK;
}

static CURLcode gtls_sha256sum(const unsigned char *tmp, /* input */
                               size_t tmplen,
                               unsigned char *sha256sum, /* output */
                               size_t sha256len)
{
#if defined(USE_GNUTLS_NETTLE)
  struct sha256_ctx SHA256pw;
  sha256_init(&SHA256pw);
  sha256_update(&SHA256pw, (unsigned int)tmplen, tmp);
  sha256_digest(&SHA256pw, (unsigned int)sha256len, sha256sum);
#elif defined(USE_GNUTLS)
  gcry_md_hd_t SHA256pw;
  gcry_md_open(&SHA256pw, GCRY_MD_SHA256, 0);
  gcry_md_write(SHA256pw, tmp, tmplen);
  memcpy(sha256sum, gcry_md_read(SHA256pw, 0), sha256len);
  gcry_md_close(SHA256pw);
#endif
  return CURLE_OK;
}

static bool gtls_cert_status_request(void)
{
  return TRUE;
}







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<




<




<
<
<
<
<
<







<




<
<
<
<
<
<
<







1577
1578
1579
1580
1581
1582
1583


















1584
1585
1586
1587

1588
1589
1590
1591






1592
1593
1594
1595
1596
1597
1598

1599
1600
1601
1602







1603
1604
1605
1606
1607
1608
1609
}

static size_t gtls_version(char *buffer, size_t size)
{
  return msnprintf(buffer, size, "GnuTLS/%s", gnutls_check_version(NULL));
}



















/* data might be NULL! */
static CURLcode gtls_random(struct Curl_easy *data,
                            unsigned char *entropy, size_t length)
{

  int rc;
  (void)data;
  rc = gnutls_rnd(GNUTLS_RND_RANDOM, entropy, length);
  return rc?CURLE_FAILED_INIT:CURLE_OK;






}

static CURLcode gtls_sha256sum(const unsigned char *tmp, /* input */
                               size_t tmplen,
                               unsigned char *sha256sum, /* output */
                               size_t sha256len)
{

  struct sha256_ctx SHA256pw;
  sha256_init(&SHA256pw);
  sha256_update(&SHA256pw, (unsigned int)tmplen, tmp);
  sha256_digest(&SHA256pw, (unsigned int)sha256len, sha256sum);







  return CURLE_OK;
}

static bool gtls_cert_status_request(void)
{
  return TRUE;
}
1667
1668
1669
1670
1671
1672
1673

1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
  Curl_none_check_cxn,           /* check_cxn */
  gtls_shutdown,                 /* shutdown */
  gtls_data_pending,             /* data_pending */
  gtls_random,                   /* random */
  gtls_cert_status_request,      /* cert_status_request */
  gtls_connect,                  /* connect */
  gtls_connect_nonblocking,      /* connect_nonblocking */

  gtls_get_internals,            /* get_internals */
  gtls_close,                    /* close_one */
  Curl_none_close_all,           /* close_all */
  gtls_session_free,             /* session_free */
  Curl_none_set_engine,          /* set_engine */
  Curl_none_set_engine_default,  /* set_engine_default */
  Curl_none_engines_list,        /* engines_list */
  Curl_none_false_start,         /* false_start */
  gtls_sha256sum                 /* sha256sum */
};

#endif /* USE_GNUTLS */







>












1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
  Curl_none_check_cxn,           /* check_cxn */
  gtls_shutdown,                 /* shutdown */
  gtls_data_pending,             /* data_pending */
  gtls_random,                   /* random */
  gtls_cert_status_request,      /* cert_status_request */
  gtls_connect,                  /* connect */
  gtls_connect_nonblocking,      /* connect_nonblocking */
  Curl_ssl_getsock,              /* getsock */
  gtls_get_internals,            /* get_internals */
  gtls_close,                    /* close_one */
  Curl_none_close_all,           /* close_all */
  gtls_session_free,             /* session_free */
  Curl_none_set_engine,          /* set_engine */
  Curl_none_set_engine_default,  /* set_engine_default */
  Curl_none_engines_list,        /* engines_list */
  Curl_none_false_start,         /* false_start */
  gtls_sha256sum                 /* sha256sum */
};

#endif /* USE_GNUTLS */
Changes to jni/curl/lib/vtls/mbedtls.c.
459
460
461
462
463
464
465
466


467
468
469
470
471
472
473
#endif

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *old_session = NULL;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, &old_session, NULL, sockindex)) {


      ret = mbedtls_ssl_set_session(&backend->ssl, old_session);
      if(ret) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "mbedtls_ssl_set_session returned -0x%x", -ret);
        return CURLE_SSL_CONNECT_ERROR;
      }
      infof(data, "mbedTLS re-using session\n");







|
>
>







459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
#endif

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *old_session = NULL;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn,
                              SSL_IS_PROXY() ? TRUE : FALSE,
                              &old_session, NULL, sockindex)) {
      ret = mbedtls_ssl_set_session(&backend->ssl, old_session);
      if(ret) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "mbedtls_ssl_set_session returned -0x%x", -ret);
        return CURLE_SSL_CONNECT_ERROR;
      }
      infof(data, "mbedTLS re-using session\n");
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
    return CURLE_SSL_CONNECT_ERROR;
  }

#ifdef HAS_ALPN
  if(conn->bits.tls_enable_alpn) {
    const char **p = &backend->protocols[0];
#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2)
      *p++ = NGHTTP2_PROTO_VERSION_ID;
#endif
    *p++ = ALPN_HTTP_1_1;
    *p = NULL;
    /* this function doesn't clone the protocols array, which is why we need
       to keep it around */
    if(mbedtls_ssl_conf_alpn_protocols(&backend->config,







|







493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
    return CURLE_SSL_CONNECT_ERROR;
  }

#ifdef HAS_ALPN
  if(conn->bits.tls_enable_alpn) {
    const char **p = &backend->protocols[0];
#ifdef USE_NGHTTP2
    if(data->state.httpversion >= CURL_HTTP_VERSION_2)
      *p++ = NGHTTP2_PROTO_VERSION_ID;
#endif
    *p++ = ALPN_HTTP_1_1;
    *p = NULL;
    /* this function doesn't clone the protocols array, which is why we need
       to keep it around */
    if(mbedtls_ssl_conf_alpn_protocols(&backend->config,
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
  int ret;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;
  const mbedtls_x509_crt *peercert;
#ifndef CURL_DISABLE_PROXY
  const char * const pinnedpubkey = SSL_IS_PROXY() ?
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
#else
  const char * const pinnedpubkey =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
#endif

  conn->recv[sockindex] = mbed_recv;
  conn->send[sockindex] = mbed_send;

  ret = mbedtls_ssl_handshake(&backend->ssl);








|


|







548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
  int ret;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;
  const mbedtls_x509_crt *peercert;
#ifndef CURL_DISABLE_PROXY
  const char * const pinnedpubkey = SSL_IS_PROXY() ?
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
#else
  const char * const pinnedpubkey =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
#endif

  conn->recv[sockindex] = mbed_recv;
  conn->send[sockindex] = mbed_send;

  ret = mbedtls_ssl_handshake(&backend->ssl);

720
721
722
723
724
725
726

727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745

746
747
748
749
750
751
752
753
754
755
756

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);

  if(SSL_SET_OPTION(primary.sessionid)) {
    int ret;
    mbedtls_ssl_session *our_ssl_sessionid;
    void *old_ssl_sessionid = NULL;


    our_ssl_sessionid = malloc(sizeof(mbedtls_ssl_session));
    if(!our_ssl_sessionid)
      return CURLE_OUT_OF_MEMORY;

    mbedtls_ssl_session_init(our_ssl_sessionid);

    ret = mbedtls_ssl_get_session(&backend->ssl, our_ssl_sessionid);
    if(ret) {
      if(ret != MBEDTLS_ERR_SSL_ALLOC_FAILED)
        mbedtls_ssl_session_free(our_ssl_sessionid);
      free(our_ssl_sessionid);
      failf(data, "mbedtls_ssl_get_session returned -0x%x", -ret);
      return CURLE_SSL_CONNECT_ERROR;
    }

    /* If there's already a matching session in the cache, delete it */
    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, &old_ssl_sessionid, NULL, sockindex))

      Curl_ssl_delsessionid(data, old_ssl_sessionid);

    retcode = Curl_ssl_addsessionid(data, conn,
                                    our_ssl_sessionid, 0, sockindex);
    Curl_ssl_sessionid_unlock(data);
    if(retcode) {
      mbedtls_ssl_session_free(our_ssl_sessionid);
      free(our_ssl_sessionid);
      failf(data, "failed to store ssl session");
      return retcode;
    }







>


















|
>


|
|







722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);

  if(SSL_SET_OPTION(primary.sessionid)) {
    int ret;
    mbedtls_ssl_session *our_ssl_sessionid;
    void *old_ssl_sessionid = NULL;
    bool isproxy = SSL_IS_PROXY() ? TRUE : FALSE;

    our_ssl_sessionid = malloc(sizeof(mbedtls_ssl_session));
    if(!our_ssl_sessionid)
      return CURLE_OUT_OF_MEMORY;

    mbedtls_ssl_session_init(our_ssl_sessionid);

    ret = mbedtls_ssl_get_session(&backend->ssl, our_ssl_sessionid);
    if(ret) {
      if(ret != MBEDTLS_ERR_SSL_ALLOC_FAILED)
        mbedtls_ssl_session_free(our_ssl_sessionid);
      free(our_ssl_sessionid);
      failf(data, "mbedtls_ssl_get_session returned -0x%x", -ret);
      return CURLE_SSL_CONNECT_ERROR;
    }

    /* If there's already a matching session in the cache, delete it */
    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, isproxy, &old_ssl_sessionid, NULL,
                              sockindex))
      Curl_ssl_delsessionid(data, old_ssl_sessionid);

    retcode = Curl_ssl_addsessionid(data, conn, isproxy, our_ssl_sessionid,
                                    0, sockindex);
    Curl_ssl_sessionid_unlock(data);
    if(retcode) {
      mbedtls_ssl_session_free(our_ssl_sessionid);
      free(our_ssl_sessionid);
      failf(data, "failed to store ssl session");
      return retcode;
    }
1096
1097
1098
1099
1100
1101
1102

1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
  Curl_none_check_cxn,              /* check_cxn */
  Curl_none_shutdown,               /* shutdown */
  mbedtls_data_pending,             /* data_pending */
  mbedtls_random,                   /* random */
  Curl_none_cert_status_request,    /* cert_status_request */
  mbedtls_connect,                  /* connect */
  mbedtls_connect_nonblocking,      /* connect_nonblocking */

  mbedtls_get_internals,            /* get_internals */
  mbedtls_close,                    /* close_one */
  mbedtls_close_all,                /* close_all */
  mbedtls_session_free,             /* session_free */
  Curl_none_set_engine,             /* set_engine */
  Curl_none_set_engine_default,     /* set_engine_default */
  Curl_none_engines_list,           /* engines_list */
  Curl_none_false_start,            /* false_start */
  mbedtls_sha256sum                 /* sha256sum */
};

#endif /* USE_MBEDTLS */







>












1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
  Curl_none_check_cxn,              /* check_cxn */
  Curl_none_shutdown,               /* shutdown */
  mbedtls_data_pending,             /* data_pending */
  mbedtls_random,                   /* random */
  Curl_none_cert_status_request,    /* cert_status_request */
  mbedtls_connect,                  /* connect */
  mbedtls_connect_nonblocking,      /* connect_nonblocking */
  Curl_ssl_getsock,                 /* getsock */
  mbedtls_get_internals,            /* get_internals */
  mbedtls_close,                    /* close_one */
  mbedtls_close_all,                /* close_all */
  mbedtls_session_free,             /* session_free */
  Curl_none_set_engine,             /* set_engine */
  Curl_none_set_engine_default,     /* set_engine_default */
  Curl_none_engines_list,           /* engines_list */
  Curl_none_false_start,            /* false_start */
  mbedtls_sha256sum                 /* sha256sum */
};

#endif /* USE_MBEDTLS */
Changes to jni/curl/lib/vtls/mesalink.c.
257
258
259
260
261
262
263
264


265
266
267
268
269
270
271
  }

#ifdef MESALINK_HAVE_SESSION
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid = NULL;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, &ssl_sessionid, NULL, sockindex)) {


      /* we got a session id, use it! */
      if(!SSL_set_session(BACKEND->handle, ssl_sessionid)) {
        Curl_ssl_sessionid_unlock(data);
        failf(
          data,
          "SSL: SSL_set_session failed: %s",
          ERR_error_string(SSL_get_error(BACKEND->handle, 0), error_buffer));







|
>
>







257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
  }

#ifdef MESALINK_HAVE_SESSION
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid = NULL;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn,
                              SSL_IS_PROXY() ? TRUE : FALSE,
                              &ssl_sessionid, NULL, sockindex)) {
      /* we got a session id, use it! */
      if(!SSL_set_session(BACKEND->handle, ssl_sessionid)) {
        Curl_ssl_sessionid_unlock(data);
        failf(
          data,
          "SSL: SSL_set_session failed: %s",
          ERR_error_string(SSL_get_error(BACKEND->handle, 0), error_buffer));
341
342
343
344
345
346
347

348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364

365
366
367
368
369
370
371
372
  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);

#ifdef MESALINK_HAVE_SESSION
  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    SSL_SESSION *our_ssl_sessionid;
    void *old_ssl_sessionid = NULL;


    our_ssl_sessionid = SSL_get_session(BACKEND->handle);

    Curl_ssl_sessionid_lock(data);
    incache =
      !(Curl_ssl_getsessionid(data, conn,
                              &old_ssl_sessionid, NULL, sockindex));
    if(incache) {
      if(old_ssl_sessionid != our_ssl_sessionid) {
        infof(data, "old SSL session ID is stale, removing\n");
        Curl_ssl_delsessionid(data, old_ssl_sessionid);
        incache = FALSE;
      }
    }

    if(!incache) {
      result = Curl_ssl_addsessionid(

        data, conn, our_ssl_sessionid, 0 /* unknown size */, sockindex);
      if(result) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "failed to store ssl session");
        return result;
      }
    }
    Curl_ssl_sessionid_unlock(data);







>





|
|









|
>
|







343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);

#ifdef MESALINK_HAVE_SESSION
  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    SSL_SESSION *our_ssl_sessionid;
    void *old_ssl_sessionid = NULL;
    bool isproxy = SSL_IS_PROXY() ? TRUE : FALSE;

    our_ssl_sessionid = SSL_get_session(BACKEND->handle);

    Curl_ssl_sessionid_lock(data);
    incache =
      !(Curl_ssl_getsessionid(data, conn, isproxy, &old_ssl_sessionid, NULL,
                              sockindex));
    if(incache) {
      if(old_ssl_sessionid != our_ssl_sessionid) {
        infof(data, "old SSL session ID is stale, removing\n");
        Curl_ssl_delsessionid(data, old_ssl_sessionid);
        incache = FALSE;
      }
    }

    if(!incache) {
      result =
        Curl_ssl_addsessionid(data, conn, isproxy, our_ssl_sessionid, 0,
                              sockindex);
      if(result) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "failed to store ssl session");
        return result;
      }
    }
    Curl_ssl_sessionid_unlock(data);
650
651
652
653
654
655
656

657
658
659
660
661
662
663
664
665
666
667
668
  Curl_none_check_cxn,           /* check_cxn */
  mesalink_shutdown,             /* shutdown */
  Curl_none_data_pending,        /* data_pending */
  Curl_none_random,              /* random */
  Curl_none_cert_status_request, /* cert_status_request */
  mesalink_connect,              /* connect */
  mesalink_connect_nonblocking,  /* connect_nonblocking */

  mesalink_get_internals,        /* get_internals */
  mesalink_close,                /* close_one */
  Curl_none_close_all,           /* close_all */
  Curl_none_session_free,        /* session_free */
  Curl_none_set_engine,          /* set_engine */
  Curl_none_set_engine_default,  /* set_engine_default */
  Curl_none_engines_list,        /* engines_list */
  Curl_none_false_start,         /* false_start */
  NULL                           /* sha256sum */
};

#endif







>












654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
  Curl_none_check_cxn,           /* check_cxn */
  mesalink_shutdown,             /* shutdown */
  Curl_none_data_pending,        /* data_pending */
  Curl_none_random,              /* random */
  Curl_none_cert_status_request, /* cert_status_request */
  mesalink_connect,              /* connect */
  mesalink_connect_nonblocking,  /* connect_nonblocking */
  Curl_ssl_getsock,              /* getsock */
  mesalink_get_internals,        /* get_internals */
  mesalink_close,                /* close_one */
  Curl_none_close_all,           /* close_all */
  Curl_none_session_free,        /* session_free */
  Curl_none_set_engine,          /* set_engine */
  Curl_none_set_engine_default,  /* set_engine_default */
  Curl_none_engines_list,        /* engines_list */
  Curl_none_false_start,         /* false_start */
  NULL                           /* sha256sum */
};

#endif
Changes to jni/curl/lib/vtls/nss.c.
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
  /* libnsspem.so leaks memory if the requested file does not exist.  For more
   * details, go to <https://bugzilla.redhat.com/734760>. */
  if(is_file(filename))
    result = nss_create_object(ssl, CKO_CERTIFICATE, filename, cacert);

  if(!result && !cacert) {
    /* we have successfully loaded a client certificate */
    CERTCertificate *cert;
    char *nickname = NULL;
    char *n = strrchr(filename, '/');
    if(n)
      n++;

    /* The following undocumented magic helps to avoid a SIGSEGV on call
     * of PK11_ReadRawAttribute() from SelectClientCert() when using an
     * immature version of libnsspem.so.  For more details, go to
     * <https://bugzilla.redhat.com/733685>. */
    nickname = aprintf("PEM Token #1:%s", n);
    if(nickname) {
      cert = PK11_FindCertFromNickname(nickname, NULL);
      if(cert)
        CERT_DestroyCertificate(cert);

      free(nickname);
    }
  }








<











|







538
539
540
541
542
543
544

545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
  /* libnsspem.so leaks memory if the requested file does not exist.  For more
   * details, go to <https://bugzilla.redhat.com/734760>. */
  if(is_file(filename))
    result = nss_create_object(ssl, CKO_CERTIFICATE, filename, cacert);

  if(!result && !cacert) {
    /* we have successfully loaded a client certificate */

    char *nickname = NULL;
    char *n = strrchr(filename, '/');
    if(n)
      n++;

    /* The following undocumented magic helps to avoid a SIGSEGV on call
     * of PK11_ReadRawAttribute() from SelectClientCert() when using an
     * immature version of libnsspem.so.  For more details, go to
     * <https://bugzilla.redhat.com/733685>. */
    nickname = aprintf("PEM Token #1:%s", n);
    if(nickname) {
      CERTCertificate *cert = PK11_FindCertFromNickname(nickname, NULL);
      if(cert)
        CERT_DestroyCertificate(cert);

      free(nickname);
    }
  }

953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980

981
982
983
984
985
986
987
988
989
  CURLcode result = CURLE_OK;
  SSLChannelInfo channel;
  SSLCipherSuiteInfo suite;
  CERTCertificate *cert;
  CERTCertificate *cert2;
  CERTCertificate *cert3;
  PRTime now;
  int i;

  if(SSL_GetChannelInfo(sock, &channel, sizeof(channel)) ==
     SECSuccess && channel.length == sizeof(channel) &&
     channel.cipherSuite) {
    if(SSL_GetCipherSuiteInfo(channel.cipherSuite,
                              &suite, sizeof(suite)) == SECSuccess) {
      infof(data, "SSL connection using %s\n", suite.cipherSuiteName);
    }
  }

  cert = SSL_PeerCertificate(sock);
  if(cert) {
    infof(data, "Server certificate:\n");

    if(!data->set.ssl.certinfo) {
      display_cert_info(data, cert);
      CERT_DestroyCertificate(cert);
    }
    else {
      /* Count certificates in chain. */

      now = PR_Now();
      i = 1;
      if(!cert->isRoot) {
        cert2 = CERT_FindCertIssuer(cert, now, certUsageSSLCA);
        while(cert2) {
          i++;
          if(cert2->isRoot) {
            CERT_DestroyCertificate(cert2);
            break;







<




















>

<







952
953
954
955
956
957
958

959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980

981
982
983
984
985
986
987
  CURLcode result = CURLE_OK;
  SSLChannelInfo channel;
  SSLCipherSuiteInfo suite;
  CERTCertificate *cert;
  CERTCertificate *cert2;
  CERTCertificate *cert3;
  PRTime now;


  if(SSL_GetChannelInfo(sock, &channel, sizeof(channel)) ==
     SECSuccess && channel.length == sizeof(channel) &&
     channel.cipherSuite) {
    if(SSL_GetCipherSuiteInfo(channel.cipherSuite,
                              &suite, sizeof(suite)) == SECSuccess) {
      infof(data, "SSL connection using %s\n", suite.cipherSuiteName);
    }
  }

  cert = SSL_PeerCertificate(sock);
  if(cert) {
    infof(data, "Server certificate:\n");

    if(!data->set.ssl.certinfo) {
      display_cert_info(data, cert);
      CERT_DestroyCertificate(cert);
    }
    else {
      /* Count certificates in chain. */
      int i = 1;
      now = PR_Now();

      if(!cert->isRoot) {
        cert2 = CERT_FindCertIssuer(cert, now, certUsageSSLCA);
        while(cert2) {
          i++;
          if(cert2->isRoot) {
            CERT_DestroyCertificate(cert2);
            break;
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
  return CURLE_OK;
}

static CURLcode nss_fail_connect(struct ssl_connect_data *connssl,
                                 struct Curl_easy *data,
                                 CURLcode curlerr)
{
  PRErrorCode err = 0;
  struct ssl_backend_data *backend = connssl->backend;

  if(is_nss_error(curlerr)) {
    /* read NSPR error code */
    err = PR_GetError();
    if(is_cc_error(err))
      curlerr = CURLE_SSL_CERTPROBLEM;

    /* print the error number and error string */
    infof(data, "NSS error %d (%s)\n", err, nss_error_to_name(err));

    /* print a human-readable message describing the error if available */







<




|







1776
1777
1778
1779
1780
1781
1782

1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
  return CURLE_OK;
}

static CURLcode nss_fail_connect(struct ssl_connect_data *connssl,
                                 struct Curl_easy *data,
                                 CURLcode curlerr)
{

  struct ssl_backend_data *backend = connssl->backend;

  if(is_nss_error(curlerr)) {
    /* read NSPR error code */
    PRErrorCode err = PR_GetError();
    if(is_cc_error(err))
      curlerr = CURLE_SSL_CERTPROBLEM;

    /* print the error number and error string */
    infof(data, "NSS error %d (%s)\n", err, nss_error_to_name(err));

    /* print a human-readable message describing the error if available */
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093

#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
  if(conn->bits.tls_enable_npn || conn->bits.tls_enable_alpn) {
    int cur = 0;
    unsigned char protocols[128];

#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
      && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
      ) {
      protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;
      memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,
          NGHTTP2_PROTO_VERSION_ID_LEN);







|







2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090

#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
  if(conn->bits.tls_enable_npn || conn->bits.tls_enable_alpn) {
    int cur = 0;
    unsigned char protocols[128];

#ifdef USE_NGHTTP2
    if(data->state.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
      && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
      ) {
      protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;
      memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,
          NGHTTP2_PROTO_VERSION_ID_LEN);
2431
2432
2433
2434
2435
2436
2437

2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
  /* NSS has no shutdown function provided and thus always fail */
  Curl_none_shutdown,           /* shutdown */
  Curl_none_data_pending,       /* data_pending */
  nss_random,                   /* random */
  nss_cert_status_request,      /* cert_status_request */
  nss_connect,                  /* connect */
  nss_connect_nonblocking,      /* connect_nonblocking */

  nss_get_internals,            /* get_internals */
  nss_close,                    /* close_one */
  Curl_none_close_all,          /* close_all */
  /* NSS has its own session ID cache */
  Curl_none_session_free,       /* session_free */
  Curl_none_set_engine,         /* set_engine */
  Curl_none_set_engine_default, /* set_engine_default */
  Curl_none_engines_list,       /* engines_list */
  nss_false_start,              /* false_start */
  nss_sha256sum                 /* sha256sum */
};

#endif /* USE_NSS */







>













2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
  /* NSS has no shutdown function provided and thus always fail */
  Curl_none_shutdown,           /* shutdown */
  Curl_none_data_pending,       /* data_pending */
  nss_random,                   /* random */
  nss_cert_status_request,      /* cert_status_request */
  nss_connect,                  /* connect */
  nss_connect_nonblocking,      /* connect_nonblocking */
  Curl_ssl_getsock,             /* getsock */
  nss_get_internals,            /* get_internals */
  nss_close,                    /* close_one */
  Curl_none_close_all,          /* close_all */
  /* NSS has its own session ID cache */
  Curl_none_session_free,       /* session_free */
  Curl_none_set_engine,         /* set_engine */
  Curl_none_set_engine_default, /* set_engine_default */
  Curl_none_engines_list,       /* engines_list */
  nss_false_start,              /* false_start */
  nss_sha256sum                 /* sha256sum */
};

#endif /* USE_NSS */
Changes to jni/curl/lib/vtls/openssl.c.
230
231
232
233
234
235
236


237
238
239
240
241
242
243
#ifdef USE_TLS_SRP
/* the functionality is not disabled */
#define USE_OPENSSL_SRP
#endif
#endif

struct ssl_backend_data {


  /* these ones requires specific SSL-types */
  SSL_CTX* ctx;
  SSL*     handle;
  X509*    server_cert;
#ifndef HAVE_KEYLOG_CALLBACK
  /* Set to true once a valid keylog entry has been created to avoid dupes. */
  bool     keylog_done;







>
>







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
#ifdef USE_TLS_SRP
/* the functionality is not disabled */
#define USE_OPENSSL_SRP
#endif
#endif

struct ssl_backend_data {
  struct Curl_easy *logger; /* transfer handle to pass trace logs to, only
                               using sockindex 0 */
  /* these ones requires specific SSL-types */
  SSL_CTX* ctx;
  SSL*     handle;
  X509*    server_cert;
#ifndef HAVE_KEYLOG_CALLBACK
  /* Set to true once a valid keylog entry has been created to avoid dupes. */
  bool     keylog_done;
387
388
389
390
391
392
393
394
395
396



397








398
399
400
401
402
403
404
405
406
}

/* Return an extra data index for the sockindex.
 * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
 */
static int ossl_get_ssl_sockindex_index(void)
{
  static int ssl_ex_data_sockindex_index = -1;
  if(ssl_ex_data_sockindex_index < 0) {
    ssl_ex_data_sockindex_index = SSL_get_ex_new_index(0, NULL, NULL, NULL,



        NULL);








  }
  return ssl_ex_data_sockindex_index;
}

static int passwd_callback(char *buf, int num, int encrypting,
                           void *global_passwd)
{
  DEBUGASSERT(0 == encrypting);








|
|
|
>
>
>
|
>
>
>
>
>
>
>
>

|







389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
}

/* Return an extra data index for the sockindex.
 * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
 */
static int ossl_get_ssl_sockindex_index(void)
{
  static int sockindex_index = -1;
  if(sockindex_index < 0) {
    sockindex_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
  }
  return sockindex_index;
}

/* Return an extra data index for proxy boolean.
 * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
 */
static int ossl_get_proxy_index(void)
{
  static int proxy_index = -1;
  if(proxy_index < 0) {
    proxy_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
  }
  return proxy_index;
}

static int passwd_callback(char *buf, int num, int encrypting,
                           void *global_passwd)
{
  DEBUGASSERT(0 == encrypting);

1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
  OpenSSL_add_all_algorithms();
#endif

  Curl_tls_keylog_open();

  /* Initialize the extra data indexes */
  if(ossl_get_ssl_data_index() < 0 || ossl_get_ssl_conn_index() < 0 ||
     ossl_get_ssl_sockindex_index() < 0)
    return 0;

  return 1;
}

/* Global cleanup */
static void ossl_cleanup(void)







|







1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
  OpenSSL_add_all_algorithms();
#endif

  Curl_tls_keylog_open();

  /* Initialize the extra data indexes */
  if(ossl_get_ssl_data_index() < 0 || ossl_get_ssl_conn_index() < 0 ||
     ossl_get_ssl_sockindex_index() < 0 || ossl_get_proxy_index() < 0)
    return 0;

  return 1;
}

/* Global cleanup */
static void ossl_cleanup(void)
1352
1353
1354
1355
1356
1357
1358



1359


1360
1361
1362

1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
    list = beg;
  }
#endif
  (void) data;
  return list;
}




static void ossl_closeone(struct ssl_connect_data *connssl)


{
  struct ssl_backend_data *backend = connssl->backend;
  if(backend->handle) {

    (void)SSL_shutdown(backend->handle);
    SSL_set_connect_state(backend->handle);

    SSL_free(backend->handle);
    backend->handle = NULL;
  }
  if(backend->ctx) {
    SSL_CTX_free(backend->ctx);
    backend->ctx = NULL;
  }
}

/*
 * This function is called when an SSL connection is closed.
 */
static void ossl_close(struct Curl_easy *data, struct connectdata *conn,
                       int sockindex)
{
  (void) data;
  ossl_closeone(&conn->ssl[sockindex]);
#ifndef CURL_DISABLE_PROXY
  ossl_closeone(&conn->proxy_ssl[sockindex]);
#endif
}

/*
 * This function is called to shut down the SSL layer but keep the
 * socket open (CCC - Clear Command Channel)
 */







>
>
>
|
>
>



>


















<
|

|







1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399

1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
    list = beg;
  }
#endif
  (void) data;
  return list;
}

#define set_logger(conn, data)                  \
  conn->ssl[0].backend->logger = data

static void ossl_closeone(struct Curl_easy *data,
                          struct connectdata *conn,
                          struct ssl_connect_data *connssl)
{
  struct ssl_backend_data *backend = connssl->backend;
  if(backend->handle) {
    set_logger(conn, data);
    (void)SSL_shutdown(backend->handle);
    SSL_set_connect_state(backend->handle);

    SSL_free(backend->handle);
    backend->handle = NULL;
  }
  if(backend->ctx) {
    SSL_CTX_free(backend->ctx);
    backend->ctx = NULL;
  }
}

/*
 * This function is called when an SSL connection is closed.
 */
static void ossl_close(struct Curl_easy *data, struct connectdata *conn,
                       int sockindex)
{

  ossl_closeone(data, conn, &conn->ssl[sockindex]);
#ifndef CURL_DISABLE_PROXY
  ossl_closeone(data, conn, &conn->proxy_ssl[sockindex]);
#endif
}

/*
 * This function is called to shut down the SSL layer but keep the
 * socket open (CCC - Clear Command Channel)
 */
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069



2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
  case SSL3_RT_APPLICATION_DATA:
    return "TLS app data";
  default:
    return "TLS Unknown";
  }
}


/*
 * Our callback from the SSL/TLS layers.
 */
static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
                          const void *buf, size_t len, SSL *ssl,
                          void *userp)
{
  struct Curl_easy *data;
  char unknown[32];
  const char *verstr = NULL;
  struct connectdata *conn = userp;




  if(!conn || !conn->data || !conn->data->set.fdebug ||
     (direction != 0 && direction != 1))
    return;

  data = conn->data;

  switch(ssl_ver) {
#ifdef SSL2_VERSION /* removed in recent versions */
  case SSL2_VERSION:
    verstr = "SSLv2";
    break;
#endif
#ifdef SSL3_VERSION







<



|
|
|

<



>
>
>

|



<
<







2069
2070
2071
2072
2073
2074
2075

2076
2077
2078
2079
2080
2081
2082

2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093


2094
2095
2096
2097
2098
2099
2100
  case SSL3_RT_APPLICATION_DATA:
    return "TLS app data";
  default:
    return "TLS Unknown";
  }
}


/*
 * Our callback from the SSL/TLS layers.
 */
static void ossl_trace(int direction, int ssl_ver, int content_type,
                       const void *buf, size_t len, SSL *ssl,
                       void *userp)
{

  char unknown[32];
  const char *verstr = NULL;
  struct connectdata *conn = userp;
  struct ssl_connect_data *connssl = &conn->ssl[0];
  struct ssl_backend_data *backend = connssl->backend;
  struct Curl_easy *data = backend->logger;

  if(!conn || !data || !data->set.fdebug ||
     (direction != 0 && direction != 1))
    return;



  switch(ssl_ver) {
#ifdef SSL2_VERSION /* removed in recent versions */
  case SSL2_VERSION:
    verstr = "SSLv2";
    break;
#endif
#ifdef SSL3_VERSION
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
                     void *arg)
{
  struct Curl_easy *data = (struct Curl_easy *)arg;
  struct connectdata *conn = data->conn;
  (void)ssl;

#ifdef USE_NGHTTP2
  if(data->set.httpversion >= CURL_HTTP_VERSION_2 &&
     !select_next_protocol(out, outlen, in, inlen, NGHTTP2_PROTO_VERSION_ID,
                           NGHTTP2_PROTO_VERSION_ID_LEN)) {
    infof(data, "NPN, negotiated HTTP2 (%s)\n",
          NGHTTP2_PROTO_VERSION_ID);
    conn->negnpn = CURL_HTTP_VERSION_2;
    return SSL_TLSEXT_ERR_OK;
  }







|







2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
                     void *arg)
{
  struct Curl_easy *data = (struct Curl_easy *)arg;
  struct connectdata *conn = data->conn;
  (void)ssl;

#ifdef USE_NGHTTP2
  if(data->state.httpwant >= CURL_HTTP_VERSION_2 &&
     !select_next_protocol(out, outlen, in, inlen, NGHTTP2_PROTO_VERSION_ID,
                           NGHTTP2_PROTO_VERSION_ID_LEN)) {
    infof(data, "NPN, negotiated HTTP2 (%s)\n",
          NGHTTP2_PROTO_VERSION_ID);
    conn->negnpn = CURL_HTTP_VERSION_2;
    return SSL_TLSEXT_ERR_OK;
  }
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
  *outlen = ALPN_HTTP_1_1_LENGTH;
  conn->negnpn = CURL_HTTP_VERSION_1_1;

  return SSL_TLSEXT_ERR_OK;
}
#endif /* HAS_NPN */

#ifndef CURL_DISABLE_VERBOSE_STRINGS
static const char *
get_ssl_version_txt(SSL *ssl)
{
  if(!ssl)
    return "";

  switch(SSL_version(ssl)) {
#ifdef TLS1_3_VERSION
  case TLS1_3_VERSION:
    return "TLSv1.3";
#endif
#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
  case TLS1_2_VERSION:
    return "TLSv1.2";
  case TLS1_1_VERSION:
    return "TLSv1.1";
#endif
  case TLS1_VERSION:
    return "TLSv1.0";
  case SSL3_VERSION:
    return "SSLv3";
  case SSL2_VERSION:
    return "SSLv2";
  }
  return "unknown";
}
#endif

#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
static CURLcode
set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
{
  /* first, TLS min version... */
  long curl_ssl_version_min = SSL_CONN_CONFIG(version);
  long curl_ssl_version_max;







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







2261
2262
2263
2264
2265
2266
2267





























2268
2269
2270
2271
2272
2273
2274
  *outlen = ALPN_HTTP_1_1_LENGTH;
  conn->negnpn = CURL_HTTP_VERSION_1_1;

  return SSL_TLSEXT_ERR_OK;
}
#endif /* HAS_NPN */






























#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
static CURLcode
set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
{
  /* first, TLS min version... */
  long curl_ssl_version_min = SSL_CONN_CONFIG(version);
  long curl_ssl_version_max;
2451
2452
2453
2454
2455
2456
2457


2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471


2472
2473
2474
2475
2476



2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
  struct connectdata *conn;
  struct Curl_easy *data;
  int sockindex;
  curl_socket_t *sockindex_ptr;
  int data_idx = ossl_get_ssl_data_index();
  int connectdata_idx = ossl_get_ssl_conn_index();
  int sockindex_idx = ossl_get_ssl_sockindex_index();



  if(data_idx < 0 || connectdata_idx < 0 || sockindex_idx < 0)
    return 0;

  conn = (struct connectdata*) SSL_get_ex_data(ssl, connectdata_idx);
  if(!conn)
    return 0;

  data = (struct Curl_easy *) SSL_get_ex_data(ssl, data_idx);

  /* The sockindex has been stored as a pointer to an array element */
  sockindex_ptr = (curl_socket_t*) SSL_get_ex_data(ssl, sockindex_idx);
  sockindex = (int)(sockindex_ptr - conn->sock);



  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    void *old_ssl_sessionid = NULL;

    Curl_ssl_sessionid_lock(data);



    incache = !(Curl_ssl_getsessionid(data, conn, &old_ssl_sessionid, NULL,
                                      sockindex));
    if(incache) {
      if(old_ssl_sessionid != ssl_sessionid) {
        infof(data, "old SSL session ID is stale, removing\n");
        Curl_ssl_delsessionid(data, old_ssl_sessionid);
        incache = FALSE;
      }
    }

    if(!incache) {
      if(!Curl_ssl_addsessionid(data, conn, ssl_sessionid,
                                      0 /* unknown size */, sockindex)) {
        /* the session has been put into the session cache */
        res = 1;
      }
      else
        failf(data, "failed to store ssl session");
    }
    Curl_ssl_sessionid_unlock(data);







>
>

|












>
>





>
>
>
|
|









|
|







2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
  struct connectdata *conn;
  struct Curl_easy *data;
  int sockindex;
  curl_socket_t *sockindex_ptr;
  int data_idx = ossl_get_ssl_data_index();
  int connectdata_idx = ossl_get_ssl_conn_index();
  int sockindex_idx = ossl_get_ssl_sockindex_index();
  int proxy_idx = ossl_get_proxy_index();
  bool isproxy;

  if(data_idx < 0 || connectdata_idx < 0 || sockindex_idx < 0 || proxy_idx < 0)
    return 0;

  conn = (struct connectdata*) SSL_get_ex_data(ssl, connectdata_idx);
  if(!conn)
    return 0;

  data = (struct Curl_easy *) SSL_get_ex_data(ssl, data_idx);

  /* The sockindex has been stored as a pointer to an array element */
  sockindex_ptr = (curl_socket_t*) SSL_get_ex_data(ssl, sockindex_idx);
  sockindex = (int)(sockindex_ptr - conn->sock);

  isproxy = SSL_get_ex_data(ssl, proxy_idx) ? TRUE : FALSE;

  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    void *old_ssl_sessionid = NULL;

    Curl_ssl_sessionid_lock(data);
    if(isproxy)
      incache = FALSE;
    else
      incache = !(Curl_ssl_getsessionid(data, conn, isproxy,
                                        &old_ssl_sessionid, NULL, sockindex));
    if(incache) {
      if(old_ssl_sessionid != ssl_sessionid) {
        infof(data, "old SSL session ID is stale, removing\n");
        Curl_ssl_delsessionid(data, old_ssl_sessionid);
        incache = FALSE;
      }
    }

    if(!incache) {
      if(!Curl_ssl_addsessionid(data, conn, isproxy, ssl_sessionid,
                                0 /* unknown size */, sockindex)) {
        /* the session has been put into the session cache */
        res = 1;
      }
      else
        failf(data, "failed to store ssl session");
    }
    Curl_ssl_sessionid_unlock(data);
2605
2606
2607
2608
2609
2610
2611
2612
2613

2614
2615
2616
2617
2618
2619
2620
#ifdef SSL_MODE_RELEASE_BUFFERS
  SSL_CTX_set_mode(backend->ctx, SSL_MODE_RELEASE_BUFFERS);
#endif

#ifdef SSL_CTRL_SET_MSG_CALLBACK
  if(data->set.fdebug && data->set.verbose) {
    /* the SSL trace callback is only used for verbose logging */
    SSL_CTX_set_msg_callback(backend->ctx, ssl_tls_trace);
    SSL_CTX_set_msg_callback_arg(backend->ctx, conn);

  }
#endif

  /* OpenSSL contains code to work-around lots of bugs and flaws in various
     SSL-implementations. SSL_CTX_set_options() is used to enabled those
     work-arounds. The man page for this option states that SSL_OP_ALL enables
     all the work-arounds and that "It is usually safe to use SSL_OP_ALL to







|

>







2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
#ifdef SSL_MODE_RELEASE_BUFFERS
  SSL_CTX_set_mode(backend->ctx, SSL_MODE_RELEASE_BUFFERS);
#endif

#ifdef SSL_CTRL_SET_MSG_CALLBACK
  if(data->set.fdebug && data->set.verbose) {
    /* the SSL trace callback is only used for verbose logging */
    SSL_CTX_set_msg_callback(backend->ctx, ossl_trace);
    SSL_CTX_set_msg_callback_arg(backend->ctx, conn);
    set_logger(conn, data);
  }
#endif

  /* OpenSSL contains code to work-around lots of bugs and flaws in various
     SSL-implementations. SSL_CTX_set_options() is used to enabled those
     work-arounds. The man page for this option states that SSL_OP_ALL enables
     all the work-arounds and that "It is usually safe to use SSL_OP_ALL to
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759

#ifdef HAS_ALPN
  if(conn->bits.tls_enable_alpn) {
    int cur = 0;
    unsigned char protocols[128];

#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
       && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
      ) {
      protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;

      memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,







|







2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755

#ifdef HAS_ALPN
  if(conn->bits.tls_enable_alpn) {
    int cur = 0;
    unsigned char protocols[128];

#ifdef USE_NGHTTP2
    if(data->state.httpwant >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
       && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
      ) {
      protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;

      memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,
2767
2768
2769
2770
2771
2772
2773
2774



2775
2776
2777
2778
2779
2780
2781
    memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
    cur += ALPN_HTTP_1_1_LENGTH;
    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);

    /* expects length prefixed preference ordered list of protocols in wire
     * format
     */
    SSL_CTX_set_alpn_protos(backend->ctx, protocols, cur);



  }
#endif

  if(ssl_cert || ssl_cert_blob || ssl_cert_type) {
    BIO *ssl_cert_bio = NULL;
    BIO *ssl_key_bio = NULL;
    if(ssl_cert_blob) {







|
>
>
>







2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
    memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
    cur += ALPN_HTTP_1_1_LENGTH;
    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);

    /* expects length prefixed preference ordered list of protocols in wire
     * format
     */
    if(SSL_CTX_set_alpn_protos(backend->ctx, protocols, cur)) {
      failf(data, "Error setting ALPN");
      return CURLE_SSL_CONNECT_ERROR;
    }
  }
#endif

  if(ssl_cert || ssl_cert_blob || ssl_cert_type) {
    BIO *ssl_cert_bio = NULL;
    BIO *ssl_key_bio = NULL;
    if(ssl_cert_blob) {
3208
3209
3210
3211
3212
3213
3214

3215
3216

3217
3218
3219
3220
3221







3222
3223
3224
3225

3226
3227
3228
3229
3230
3231
3232

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid = NULL;
    int data_idx = ossl_get_ssl_data_index();
    int connectdata_idx = ossl_get_ssl_conn_index();
    int sockindex_idx = ossl_get_ssl_sockindex_index();


    if(data_idx >= 0 && connectdata_idx >= 0 && sockindex_idx >= 0) {

      /* Store the data needed for the "new session" callback.
       * The sockindex is stored as a pointer to an array element. */
      SSL_set_ex_data(backend->handle, data_idx, data);
      SSL_set_ex_data(backend->handle, connectdata_idx, conn);
      SSL_set_ex_data(backend->handle, sockindex_idx, conn->sock + sockindex);







    }

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, &ssl_sessionid, NULL, sockindex)) {

      /* we got a session id, use it! */
      if(!SSL_set_session(backend->handle, ssl_sessionid)) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "SSL: SSL_set_session failed: %s",
              ossl_strerror(ERR_get_error(), error_buffer,
                            sizeof(error_buffer)));
        return CURLE_SSL_CONNECT_ERROR;







>

|
>





>
>
>
>
>
>
>



|
>







3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid = NULL;
    int data_idx = ossl_get_ssl_data_index();
    int connectdata_idx = ossl_get_ssl_conn_index();
    int sockindex_idx = ossl_get_ssl_sockindex_index();
    int proxy_idx = ossl_get_proxy_index();

    if(data_idx >= 0 && connectdata_idx >= 0 && sockindex_idx >= 0 &&
       proxy_idx >= 0) {
      /* Store the data needed for the "new session" callback.
       * The sockindex is stored as a pointer to an array element. */
      SSL_set_ex_data(backend->handle, data_idx, data);
      SSL_set_ex_data(backend->handle, connectdata_idx, conn);
      SSL_set_ex_data(backend->handle, sockindex_idx, conn->sock + sockindex);
#ifndef CURL_DISABLE_PROXY
      SSL_set_ex_data(backend->handle, proxy_idx, SSL_IS_PROXY() ? (void *) 1:
                      NULL);
#else
      SSL_set_ex_data(backend->handle, proxy_idx, NULL);
#endif

    }

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
                              &ssl_sessionid, NULL, sockindex)) {
      /* we got a session id, use it! */
      if(!SSL_set_session(backend->handle, ssl_sessionid)) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "SSL: SSL_set_session failed: %s",
              ossl_strerror(ERR_get_error(), error_buffer,
                            sizeof(error_buffer)));
        return CURLE_SSL_CONNECT_ERROR;
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
  }
  else {
    /* we have been connected fine, we're not waiting for anything else. */
    connssl->connecting_state = ssl_connect_3;

    /* Informational message */
    infof(data, "SSL connection using %s / %s\n",
          get_ssl_version_txt(backend->handle),
          SSL_get_cipher(backend->handle));

#ifdef HAS_ALPN
    /* Sets data and len to negotiated protocol, len is 0 if no protocol was
     * negotiated
     */
    if(conn->bits.tls_enable_alpn) {







|







3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
  }
  else {
    /* we have been connected fine, we're not waiting for anything else. */
    connssl->connecting_state = ssl_connect_3;

    /* Informational message */
    infof(data, "SSL connection using %s / %s\n",
          SSL_get_version(backend->handle),
          SSL_get_cipher(backend->handle));

#ifdef HAS_ALPN
    /* Sets data and len to negotiated protocol, len is 0 if no protocol was
     * negotiated
     */
    if(conn->bits.tls_enable_alpn) {
3510
3511
3512
3513
3514
3515
3516






3517
3518
3519
3520
3521
3522
3523
}

#ifdef OPENSSL_IS_BORINGSSL
typedef size_t numcert_t;
#else
typedef int numcert_t;
#endif







static CURLcode get_cert_chain(struct Curl_easy *data,
                               struct ssl_connect_data *connssl)
{
  CURLcode result;
  STACK_OF(X509) *sk;
  int i;







>
>
>
>
>
>







3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
}

#ifdef OPENSSL_IS_BORINGSSL
typedef size_t numcert_t;
#else
typedef int numcert_t;
#endif

#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3)
#define OSSL3_CONST const
#else
#define OSSL3_CONST
#endif

static CURLcode get_cert_chain(struct Curl_easy *data,
                               struct ssl_connect_data *connssl)
{
  CURLcode result;
  STACK_OF(X509) *sk;
  int i;
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
      pktype = EVP_PKEY_id(pubkey);
#else
      pktype = pubkey->type;
#endif
      switch(pktype) {
      case EVP_PKEY_RSA:
      {
        RSA *rsa;
#ifdef HAVE_OPAQUE_EVP_PKEY
        rsa = EVP_PKEY_get0_RSA(pubkey);
#else
        rsa = pubkey->pkey.rsa;
#endif

#ifdef HAVE_OPAQUE_RSA_DSA_DH







|







3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
      pktype = EVP_PKEY_id(pubkey);
#else
      pktype = pubkey->type;
#endif
      switch(pktype) {
      case EVP_PKEY_RSA:
      {
        OSSL3_CONST RSA *rsa;
#ifdef HAVE_OPAQUE_EVP_PKEY
        rsa = EVP_PKEY_get0_RSA(pubkey);
#else
        rsa = pubkey->pkey.rsa;
#endif

#ifdef HAVE_OPAQUE_RSA_DSA_DH
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
#endif

        break;
      }
      case EVP_PKEY_DSA:
      {
#ifndef OPENSSL_NO_DSA
        DSA *dsa;
#ifdef HAVE_OPAQUE_EVP_PKEY
        dsa = EVP_PKEY_get0_DSA(pubkey);
#else
        dsa = pubkey->pkey.dsa;
#endif
#ifdef HAVE_OPAQUE_RSA_DSA_DH
        {







|







3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
#endif

        break;
      }
      case EVP_PKEY_DSA:
      {
#ifndef OPENSSL_NO_DSA
        OSSL3_CONST DSA *dsa;
#ifdef HAVE_OPAQUE_EVP_PKEY
        dsa = EVP_PKEY_get0_DSA(pubkey);
#else
        dsa = pubkey->pkey.dsa;
#endif
#ifdef HAVE_OPAQUE_RSA_DSA_DH
        {
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
        print_pubkey_BN(dsa, pub_key, i);
#endif
#endif /* !OPENSSL_NO_DSA */
        break;
      }
      case EVP_PKEY_DH:
      {
        DH *dh;
#ifdef HAVE_OPAQUE_EVP_PKEY
        dh = EVP_PKEY_get0_DH(pubkey);
#else
        dh = pubkey->pkey.dh;
#endif
#ifdef HAVE_OPAQUE_RSA_DSA_DH
        {







|







3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
        print_pubkey_BN(dsa, pub_key, i);
#endif
#endif /* !OPENSSL_NO_DSA */
        break;
      }
      case EVP_PKEY_DH:
      {
        OSSL3_CONST DH *dh;
#ifdef HAVE_OPAQUE_EVP_PKEY
        dh = EVP_PKEY_get0_DH(pubkey);
#else
        dh = pubkey->pkey.dh;
#endif
#ifdef HAVE_OPAQUE_RSA_DSA_DH
        {
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
#endif

  if(!strict)
    /* when not strict, we don't bother about the verify cert problems */
    result = CURLE_OK;

  ptr = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
                         data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
  if(!result && ptr) {
    result = pkp_pin_peer_pubkey(data, backend->server_cert, ptr);
    if(result)
      failf(data, "SSL: public key does not match pinned public key!");
  }

  X509_free(backend->server_cert);







|







3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
#endif

  if(!strict)
    /* when not strict, we don't bother about the verify cert problems */
    result = CURLE_OK;

  ptr = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
  if(!result && ptr) {
    result = pkp_pin_peer_pubkey(data, backend->server_cert, ptr);
    if(result)
      failf(data, "SSL: public key does not match pinned public key!");
  }

  X509_free(backend->server_cert);
4172
4173
4174
4175
4176
4177
4178

4179
4180
4181
4182
4183
4184
4185
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;

  ERR_clear_error();

  memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;

  rc = SSL_write(backend->handle, mem, memlen);

  if(rc <= 0) {
    err = SSL_get_error(backend->handle, rc);

    switch(err) {
    case SSL_ERROR_WANT_READ:







>







4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;

  ERR_clear_error();

  memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
  set_logger(conn, data);
  rc = SSL_write(backend->handle, mem, memlen);

  if(rc <= 0) {
    err = SSL_get_error(backend->handle, rc);

    switch(err) {
    case SSL_ERROR_WANT_READ:
4250
4251
4252
4253
4254
4255
4256

4257
4258
4259
4260
4261
4262
4263
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *connssl = &conn->ssl[num];
  struct ssl_backend_data *backend = connssl->backend;

  ERR_clear_error();

  buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;

  nread = (ssize_t)SSL_read(backend->handle, buf, buffsize);
  if(nread <= 0) {
    /* failed SSL_read */
    int err = SSL_get_error(backend->handle, (int)nread);

    switch(err) {
    case SSL_ERROR_NONE: /* this is not an error */







>







4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *connssl = &conn->ssl[num];
  struct ssl_backend_data *backend = connssl->backend;

  ERR_clear_error();

  buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
  set_logger(conn, data);
  nread = (ssize_t)SSL_read(backend->handle, buf, buffsize);
  if(nread <= 0) {
    /* failed SSL_read */
    int err = SSL_get_error(backend->handle, (int)nread);

    switch(err) {
    case SSL_ERROR_NONE: /* this is not an error */
4473
4474
4475
4476
4477
4478
4479

4480
4481
4482
4483
4484
4485
4486
  ossl_check_cxn,           /* check_cxn */
  ossl_shutdown,            /* shutdown */
  ossl_data_pending,        /* data_pending */
  ossl_random,              /* random */
  ossl_cert_status_request, /* cert_status_request */
  ossl_connect,             /* connect */
  ossl_connect_nonblocking, /* connect_nonblocking */

  ossl_get_internals,       /* get_internals */
  ossl_close,               /* close_one */
  ossl_close_all,           /* close_all */
  ossl_session_free,        /* session_free */
  ossl_set_engine,          /* set_engine */
  ossl_set_engine_default,  /* set_engine_default */
  ossl_engines_list,        /* engines_list */







>







4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
  ossl_check_cxn,           /* check_cxn */
  ossl_shutdown,            /* shutdown */
  ossl_data_pending,        /* data_pending */
  ossl_random,              /* random */
  ossl_cert_status_request, /* cert_status_request */
  ossl_connect,             /* connect */
  ossl_connect_nonblocking, /* connect_nonblocking */
  Curl_ssl_getsock,         /* getsock */
  ossl_get_internals,       /* get_internals */
  ossl_close,               /* close_one */
  ossl_close_all,           /* close_all */
  ossl_session_free,        /* session_free */
  ossl_set_engine,          /* set_engine */
  ossl_set_engine_default,  /* set_engine_default */
  ossl_engines_list,        /* engines_list */
Added jni/curl/lib/vtls/rustls.c.
































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2020 - 2021, Jacob Hoffman-Andrews,
 * <github@hoffman-andrews.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "curl_setup.h"

#ifdef USE_RUSTLS

#include "curl_printf.h"

#include <errno.h>
#include <crustls.h>

#include "inet_pton.h"
#include "urldata.h"
#include "sendf.h"
#include "vtls.h"
#include "select.h"

#include "multiif.h"

/* Per https://www.bearssl.org/api1.html, max TLS record size plus max
   per-record overhead. */
#define TLSBUF_SIZE (16384 + 325)

struct ssl_backend_data
{
  const struct rustls_client_config *config;
  struct rustls_client_session *session;
  bool data_pending;
  uint8_t *tlsbuf;
};

/* For a given rustls_result error code, return the best-matching CURLcode. */
static CURLcode map_error(rustls_result r)
{
  if(rustls_result_is_cert_error(r)) {
    return CURLE_PEER_FAILED_VERIFICATION;
  }
  switch(r) {
    case RUSTLS_RESULT_OK:
      return CURLE_OK;
    case RUSTLS_RESULT_NULL_PARAMETER:
      return CURLE_BAD_FUNCTION_ARGUMENT;
    default:
      return CURLE_READ_ERROR;
  }
}

static bool
cr_data_pending(const struct connectdata *conn, int sockindex)
{
  const struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;
  return backend->data_pending;
}

static CURLcode
cr_connect(struct Curl_easy *data UNUSED_PARAM,
                    struct connectdata *conn UNUSED_PARAM,
                    int sockindex UNUSED_PARAM)
{
  infof(data, "rustls_connect: unimplemented\n");
  return CURLE_SSL_CONNECT_ERROR;
}

/*
 * On each run:
 *  - Read a chunk of bytes from the socket into rustls' TLS input buffer.
 *  - Tell rustls to process any new packets.
 *  - Read out as many plaintext bytes from rustls as possible, until hitting
 *    error, EOF, or EAGAIN/EWOULDBLOCK, or plainbuf/plainlen is filled up.
 *
 * It's okay to call this function with plainbuf == NULL and plainlen == 0.
 * In that case, it will copy bytes from the socket into rustls' TLS input
 * buffer, and process packets, but won't consume bytes from rustls' plaintext
 * output buffer.
 */
static ssize_t
cr_recv(struct Curl_easy *data, int sockindex,
            char *plainbuf, size_t plainlen, CURLcode *err)
{
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *const connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *const backend = connssl->backend;
  struct rustls_client_session *const session = backend->session;
  curl_socket_t sockfd = conn->sock[sockindex];
  size_t n = 0;
  ssize_t tls_bytes_read = 0;
  size_t tls_bytes_processed = 0;
  size_t plain_bytes_copied = 0;
  rustls_result rresult = 0;
  char errorbuf[255];

  tls_bytes_read = sread(sockfd, backend->tlsbuf, TLSBUF_SIZE);
  if(tls_bytes_read == 0) {
    failf(data, "connection closed without TLS close_notify alert");
    *err = CURLE_READ_ERROR;
    return -1;
  }
  else if(tls_bytes_read < 0) {
    if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
      infof(data, "sread: EAGAIN or EWOULDBLOCK\n");
      *err = CURLE_AGAIN;
      return -1;
    }
    failf(data, "reading from socket: %s", strerror(SOCKERRNO));
    *err = CURLE_READ_ERROR;
    return -1;
  }

  /*
  * Now pull those bytes from the buffer into ClientSession.
  */
  DEBUGASSERT(tls_bytes_read > 0);
  while(tls_bytes_processed < (size_t)tls_bytes_read) {
    rresult = rustls_client_session_read_tls(session,
      backend->tlsbuf + tls_bytes_processed,
      tls_bytes_read - tls_bytes_processed,
      &n);
    if(rresult != RUSTLS_RESULT_OK) {
      failf(data, "error in rustls_client_session_read_tls");
      *err = CURLE_READ_ERROR;
      return -1;
    }
    else if(n == 0) {
      infof(data, "EOF from rustls_client_session_read_tls\n");
      break;
    }

    rresult = rustls_client_session_process_new_packets(session);
    if(rresult != RUSTLS_RESULT_OK) {
      rustls_error(rresult, errorbuf, sizeof(errorbuf), &n);
      failf(data, "%.*s", n, errorbuf);
      *err = map_error(rresult);
      return -1;
    }

    tls_bytes_processed += n;
    backend->data_pending = TRUE;
  }

  while(plain_bytes_copied < plainlen) {
    rresult = rustls_client_session_read(session,
      (uint8_t *)plainbuf + plain_bytes_copied,
      plainlen - plain_bytes_copied,
      &n);
    if(rresult == RUSTLS_RESULT_ALERT_CLOSE_NOTIFY) {
      *err = CURLE_OK;
      return 0;
    }
    else if(rresult != RUSTLS_RESULT_OK) {
      failf(data, "error in rustls_client_session_read");
      *err = CURLE_READ_ERROR;
      return -1;
    }
    else if(n == 0) {
      /* rustls returns 0 from client_session_read to mean "all currently
        available data has been read." If we bring in more ciphertext with
        read_tls, more plaintext will become available. So don't tell curl
        this is an EOF. Instead, say "come back later." */
      infof(data, "EOF from rustls_client_session_read\n");
      backend->data_pending = FALSE;
      break;
    }
    else {
      plain_bytes_copied += n;
    }
  }

  /* If we wrote out 0 plaintext bytes, it might just mean we haven't yet
     read a full TLS record. Return CURLE_AGAIN so curl doesn't treat this
     as EOF. */
  if(plain_bytes_copied == 0) {
    *err = CURLE_AGAIN;
    return -1;
  }

  return plain_bytes_copied;
}

/*
 * On each call:
 *  - Copy `plainlen` bytes into rustls' plaintext input buffer (if > 0).
 *  - Fully drain rustls' plaintext output buffer into the socket until
 *    we get either an error or EAGAIN/EWOULDBLOCK.
 *
 * It's okay to call this function with plainbuf == NULL and plainlen == 0.
 * In that case, it won't read anything into rustls' plaintext input buffer.
 * It will only drain rustls' plaintext output buffer into the socket.
 */
static ssize_t
cr_send(struct Curl_easy *data, int sockindex,
        const void *plainbuf, size_t plainlen, CURLcode *err)
{
  struct connectdata *conn = data->conn;
  struct ssl_connect_data *const connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *const backend = connssl->backend;
  struct rustls_client_session *const session = backend->session;
  curl_socket_t sockfd = conn->sock[sockindex];
  ssize_t n = 0;
  size_t plainwritten = 0;
  size_t tlslen = 0;
  size_t tlswritten = 0;
  rustls_result rresult;

  if(plainlen > 0) {
    rresult = rustls_client_session_write(session,
                                          plainbuf, plainlen, &plainwritten);
    if(rresult != RUSTLS_RESULT_OK) {
      failf(data, "error in rustls_client_session_write");
      *err = CURLE_WRITE_ERROR;
      return -1;
    }
    else if(plainwritten == 0) {
      failf(data, "EOF in rustls_client_session_write");
      *err = CURLE_WRITE_ERROR;
      return -1;
    }
  }

  while(rustls_client_session_wants_write(session)) {
    rresult = rustls_client_session_write_tls(
      session, backend->tlsbuf, TLSBUF_SIZE, &tlslen);
    if(rresult != RUSTLS_RESULT_OK) {
      failf(data, "error in rustls_client_session_write_tls");
      *err = CURLE_WRITE_ERROR;
      return -1;
    }
    else if(tlslen == 0) {
      failf(data, "EOF in rustls_client_session_write_tls");
      *err = CURLE_WRITE_ERROR;
      return -1;
    }

    tlswritten = 0;

    while(tlswritten < tlslen) {
      n = swrite(sockfd, backend->tlsbuf + tlswritten, tlslen - tlswritten);
      if(n < 0) {
        if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
          /* Since recv is called from poll, there should be room to
             write at least some bytes before hitting EAGAIN. */
          infof(data, "swrite: EAGAIN after %ld bytes\n", tlswritten);
          DEBUGASSERT(tlswritten > 0);
          break;
        }
        failf(data, "error in swrite");
        *err = CURLE_WRITE_ERROR;
        return -1;
      }
      if(n == 0) {
        failf(data, "EOF in swrite");
        *err = CURLE_WRITE_ERROR;
        return -1;
      }
      tlswritten += n;
    }

    DEBUGASSERT(tlswritten <= tlslen);
  }

  return plainwritten;
}

/* A server certificate verify callback for rustls that always returns
   RUSTLS_RESULT_OK, or in other words disable certificate verification. */
static enum rustls_result
cr_verify_none(void *userdata UNUSED_PARAM,
               const rustls_verify_server_cert_params *params UNUSED_PARAM)
{
  return RUSTLS_RESULT_OK;
}

static bool
cr_hostname_is_ip(const char *hostname)
{
  struct in_addr in;
#ifdef ENABLE_IPV6
  struct in6_addr in6;
  if(Curl_inet_pton(AF_INET6, hostname, &in6) > 0) {
    return true;
  }
#endif /* ENABLE_IPV6 */
  if(Curl_inet_pton(AF_INET, hostname, &in) > 0) {
    return true;
  }
  return false;
}

static CURLcode
cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
                struct ssl_backend_data *const backend)
{
  struct rustls_client_session *session = backend->session;
  struct rustls_client_config_builder *config_builder = NULL;
  const char *const ssl_cafile = SSL_CONN_CONFIG(CAfile);
  const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
  const char *hostname = conn->host.name;
  char errorbuf[256];
  size_t errorlen;
  int result;

  backend->tlsbuf = calloc(TLSBUF_SIZE, 1);
  if(backend->tlsbuf == NULL) {
    return CURLE_OUT_OF_MEMORY;
  }

  config_builder = rustls_client_config_builder_new();
  if(!verifypeer) {
    rustls_client_config_builder_dangerous_set_certificate_verifier(
      config_builder, cr_verify_none, NULL);
    /* rustls doesn't support IP addresses (as of 0.19.0), and will reject
     * sessions created with an IP address, even when certificate verification
     * is turned off. Set a placeholder hostname and disable SNI. */
    if(cr_hostname_is_ip(hostname)) {
      rustls_client_config_builder_set_enable_sni(config_builder, false);
      hostname = "example.invalid";
    }
  }
  else if(ssl_cafile) {
    result = rustls_client_config_builder_load_roots_from_file(
      config_builder, ssl_cafile);
    if(result != RUSTLS_RESULT_OK) {
      failf(data, "failed to load trusted certificates");
      rustls_client_config_free(
        rustls_client_config_builder_build(config_builder));
      return CURLE_SSL_CACERT_BADFILE;
    }
  }
  else {
    result = rustls_client_config_builder_load_native_roots(config_builder);
    if(result != RUSTLS_RESULT_OK) {
      failf(data, "failed to load trusted certificates");
      rustls_client_config_free(
        rustls_client_config_builder_build(config_builder));
      return CURLE_SSL_CACERT_BADFILE;
    }
  }

  backend->config = rustls_client_config_builder_build(config_builder);
  DEBUGASSERT(session == NULL);
  result = rustls_client_session_new(
    backend->config, hostname, &session);
  if(result != RUSTLS_RESULT_OK) {
    rustls_error(result, errorbuf, sizeof(errorbuf), &errorlen);
    failf(data, "failed to create client session: %.*s", errorlen, errorbuf);
    return CURLE_COULDNT_CONNECT;
  }
  backend->session = session;
  return CURLE_OK;
}

static CURLcode
cr_connect_nonblocking(struct Curl_easy *data, struct connectdata *conn,
                       int sockindex, bool *done)
{
  struct ssl_connect_data *const connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  struct ssl_backend_data *const backend = connssl->backend;
  struct rustls_client_session *session = NULL;
  CURLcode tmperr = CURLE_OK;
  int result;
  int what;
  bool wants_read;
  bool wants_write;
  curl_socket_t writefd;
  curl_socket_t readfd;

  if(ssl_connection_none == connssl->state) {
    result = cr_init_backend(data, conn, connssl->backend);
    if(result != CURLE_OK) {
      return result;
    }
    connssl->state = ssl_connection_negotiating;
  }

  session = backend->session;

  /* Read/write data until the handshake is done or the socket would block. */
  for(;;) {
    /*
    * Connection has been established according to rustls. Set send/recv
    * handlers, and update the state machine.
    * This check has to come last because is_handshaking starts out false,
    * then becomes true when we first write data, then becomes false again
    * once the handshake is done.
    */
    if(!rustls_client_session_is_handshaking(session)) {
      infof(data, "Done handshaking\n");
      /* Done with the handshake. Set up callbacks to send/receive data. */
      connssl->state = ssl_connection_complete;
      conn->recv[sockindex] = cr_recv;
      conn->send[sockindex] = cr_send;
      *done = TRUE;
      return CURLE_OK;
    }

    wants_read = rustls_client_session_wants_read(session);
    wants_write = rustls_client_session_wants_write(session);
    DEBUGASSERT(wants_read || wants_write);
    writefd = wants_write?sockfd:CURL_SOCKET_BAD;
    readfd = wants_read?sockfd:CURL_SOCKET_BAD;

    what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd, 0);
    if(what < 0) {
      /* fatal error */
      failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
      return CURLE_SSL_CONNECT_ERROR;
    }
    if(0 == what) {
      infof(data, "Curl_socket_check: %s would block\n",
          wants_read&&wants_write ?
            "writing and reading" :
            wants_write ?
              "writing" :
              "reading");
      *done = FALSE;
      return CURLE_OK;
    }
    /* socket is readable or writable */

    if(wants_write) {
      infof(data, "ClientSession wants us to write_tls.\n");
      cr_send(data, sockindex, NULL, 0, &tmperr);
      if(tmperr == CURLE_AGAIN) {
        infof(data, "writing would block\n");
        /* fall through */
      }
      else if(tmperr != CURLE_OK) {
        return tmperr;
      }
    }

    if(wants_read) {
      infof(data, "ClientSession wants us to read_tls.\n");

      cr_recv(data, sockindex, NULL, 0, &tmperr);
      if(tmperr == CURLE_AGAIN) {
        infof(data, "reading would block\n");
        /* fall through */
      }
      else if(tmperr != CURLE_OK) {
        if(tmperr == CURLE_READ_ERROR) {
          return CURLE_SSL_CONNECT_ERROR;
        }
        else {
          return tmperr;
        }
      }
    }
  }

  /* We should never fall through the loop. We should return either because
     the handshake is done or because we can't read/write without blocking. */
  DEBUGASSERT(false);
}

/* returns a bitmap of flags for this connection's first socket indicating
   whether we want to read or write */
static int
cr_getsock(struct connectdata *conn, curl_socket_t *socks)
{
  struct ssl_connect_data *const connssl = &conn->ssl[FIRSTSOCKET];
  curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
  struct ssl_backend_data *const backend = connssl->backend;
  struct rustls_client_session *session = backend->session;

  if(rustls_client_session_wants_write(session)) {
    socks[0] = sockfd;
    return GETSOCK_WRITESOCK(0);
  }
  if(rustls_client_session_wants_read(session)) {
    socks[0] = sockfd;
    return GETSOCK_READSOCK(0);
  }

  return GETSOCK_BLANK;
}

static void *
cr_get_internals(struct ssl_connect_data *connssl,
                 CURLINFO info UNUSED_PARAM)
{
  struct ssl_backend_data *backend = connssl->backend;
  return &backend->session;
}

static void
cr_close(struct Curl_easy *data, struct connectdata *conn,
         int sockindex)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;
  CURLcode tmperr = CURLE_OK;
  ssize_t n = 0;

  if(backend->session) {
    rustls_client_session_send_close_notify(backend->session);
    n = cr_send(data, sockindex, NULL, 0, &tmperr);
    if(n < 0) {
      failf(data, "error sending close notify: %d", tmperr);
    }

    rustls_client_session_free(backend->session);
    backend->session = NULL;
  }
  if(backend->config) {
    rustls_client_config_free(backend->config);
    backend->config = NULL;
  }
  free(backend->tlsbuf);
}

const struct Curl_ssl Curl_ssl_rustls = {
  { CURLSSLBACKEND_RUSTLS, "rustls" },
  SSLSUPP_TLS13_CIPHERSUITES,      /* supports */
  sizeof(struct ssl_backend_data),

  Curl_none_init,                  /* init */
  Curl_none_cleanup,               /* cleanup */
  rustls_version,                  /* version */
  Curl_none_check_cxn,             /* check_cxn */
  Curl_none_shutdown,              /* shutdown */
  cr_data_pending,                 /* data_pending */
  Curl_none_random,                /* random */
  Curl_none_cert_status_request,   /* cert_status_request */
  cr_connect,                      /* connect */
  cr_connect_nonblocking,          /* connect_nonblocking */
  cr_getsock,                      /* cr_getsock */
  cr_get_internals,                /* get_internals */
  cr_close,                        /* close_one */
  Curl_none_close_all,             /* close_all */
  Curl_none_session_free,          /* session_free */
  Curl_none_set_engine,            /* set_engine */
  Curl_none_set_engine_default,    /* set_engine_default */
  Curl_none_engines_list,          /* engines_list */
  Curl_none_false_start,           /* false_start */
  NULL                             /* sha256sum */
};

#endif /* USE_RUSTLS */
Added jni/curl/lib/vtls/rustls.h.


































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2020 - 2021, Jacob Hoffman-Andrews,
 * <github@hoffman-andrews.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#ifndef HEADER_CURL_RUSTLS_H
#define HEADER_CURL_RUSTLS_H

#include "curl_setup.h"

#ifdef USE_RUSTLS

extern const struct Curl_ssl Curl_ssl_rustls;

#endif /* USE_RUSTLS */
#endif /* HEADER_CURL_RUSTLS_H */
Changes to jni/curl/lib/vtls/schannel.c.
492
493
494
495
496
497
498

499
500
501
502
503
504
505

  BACKEND->cred = NULL;

  /* check for an existing re-usable credential handle */
  if(SSL_SET_OPTION(primary.sessionid)) {
    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn,

                              (void **)&old_cred, NULL, sockindex)) {
      BACKEND->cred = old_cred;
      DEBUGF(infof(data, "schannel: re-using existing credential handle\n"));

      /* increment the reference counter of the credential/session handle */
      BACKEND->cred->refcount++;
      DEBUGF(infof(data,







>







492
493
494
495
496
497
498
499
500
501
502
503
504
505
506

  BACKEND->cred = NULL;

  /* check for an existing re-usable credential handle */
  if(SSL_SET_OPTION(primary.sessionid)) {
    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn,
                              SSL_IS_PROXY() ? TRUE : FALSE,
                              (void **)&old_cred, NULL, sockindex)) {
      BACKEND->cred = old_cred;
      DEBUGF(infof(data, "schannel: re-using existing credential handle\n"));

      /* increment the reference counter of the credential/session handle */
      BACKEND->cred->refcount++;
      DEBUGF(infof(data,
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
#ifdef HAS_MANUAL_VERIFY_API
      if(BACKEND->use_manual_cred_validation)
        schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION;
      else
#endif
        schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;

      if(data->set.ssl.no_revoke) {
        schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
          SCH_CRED_IGNORE_REVOCATION_OFFLINE;

        DEBUGF(infof(data, "schannel: disabled server certificate revocation "
                     "checks\n"));
      }
      else if(data->set.ssl.revoke_best_effort) {
        schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
          SCH_CRED_IGNORE_REVOCATION_OFFLINE | SCH_CRED_REVOCATION_CHECK_CHAIN;

        DEBUGF(infof(data, "schannel: ignore revocation offline errors"));
      }
      else {
        schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;







|






|







519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
#ifdef HAS_MANUAL_VERIFY_API
      if(BACKEND->use_manual_cred_validation)
        schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION;
      else
#endif
        schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;

      if(SSL_SET_OPTION(no_revoke)) {
        schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
          SCH_CRED_IGNORE_REVOCATION_OFFLINE;

        DEBUGF(infof(data, "schannel: disabled server certificate revocation "
                     "checks\n"));
      }
      else if(SSL_SET_OPTION(revoke_best_effort)) {
        schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
          SCH_CRED_IGNORE_REVOCATION_OFFLINE | SCH_CRED_REVOCATION_CHECK_CHAIN;

        DEBUGF(infof(data, "schannel: ignore revocation offline errors"));
      }
      else {
        schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
       of bytes used to list the preferred protocols. */
    list_len = (unsigned short*)(&alpn_buffer[cur]);
    cur += sizeof(unsigned short);

    list_start_index = cur;

#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2) {
      memcpy(&alpn_buffer[cur], NGHTTP2_PROTO_ALPN, NGHTTP2_PROTO_ALPN_LEN);
      cur += NGHTTP2_PROTO_ALPN_LEN;
      infof(data, "schannel: ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
    }
#endif

    alpn_buffer[cur++] = ALPN_HTTP_1_1_LENGTH;







|







858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
       of bytes used to list the preferred protocols. */
    list_len = (unsigned short*)(&alpn_buffer[cur]);
    cur += sizeof(unsigned short);

    list_start_index = cur;

#ifdef USE_NGHTTP2
    if(data->state.httpversion >= CURL_HTTP_VERSION_2) {
      memcpy(&alpn_buffer[cur], NGHTTP2_PROTO_ALPN, NGHTTP2_PROTO_ALPN_LEN);
      cur += NGHTTP2_PROTO_ALPN_LEN;
      infof(data, "schannel: ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
    }
#endif

    alpn_buffer[cur++] = ALPN_HTTP_1_1_LENGTH;
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
  if(sspi_status == SEC_E_OK) {
    connssl->connecting_state = ssl_connect_3;
    DEBUGF(infof(data, "schannel: SSL/TLS handshake complete\n"));
  }

  pubkey_ptr = SSL_IS_PROXY() ?
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
  if(pubkey_ptr) {
    result = pkp_pin_peer_pubkey(data, conn, sockindex, pubkey_ptr);
    if(result) {
      failf(data, "SSL: public key does not match pinned public key!");
      return result;
    }
  }







|







1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
  if(sspi_status == SEC_E_OK) {
    connssl->connecting_state = ssl_connect_3;
    DEBUGF(infof(data, "schannel: SSL/TLS handshake complete\n"));
  }

  pubkey_ptr = SSL_IS_PROXY() ?
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
  if(pubkey_ptr) {
    result = pkp_pin_peer_pubkey(data, conn, sockindex, pubkey_ptr);
    if(result) {
      failf(data, "SSL: public key does not match pinned public key!");
      return result;
    }
  }
1333
1334
1335
1336
1337
1338
1339

1340
1341
1342
1343
1344
1345
1346
1347
1348
schannel_connect_step3(struct Curl_easy *data, struct connectdata *conn,
                       int sockindex)
{
  CURLcode result = CURLE_OK;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  SECURITY_STATUS sspi_status = SEC_E_OK;
  CERT_CONTEXT *ccert_context = NULL;

#ifdef DEBUGBUILD
  const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
    conn->host.name;
#endif
#ifdef HAS_ALPN
  SecPkgContext_ApplicationProtocol alpn_result;
#endif

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);







>

|







1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
schannel_connect_step3(struct Curl_easy *data, struct connectdata *conn,
                       int sockindex)
{
  CURLcode result = CURLE_OK;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  SECURITY_STATUS sspi_status = SEC_E_OK;
  CERT_CONTEXT *ccert_context = NULL;
  bool isproxy = SSL_IS_PROXY();
#ifdef DEBUGBUILD
  const char * const hostname = isproxy ? conn->http_proxy.host.name :
    conn->host.name;
#endif
#ifdef HAS_ALPN
  SecPkgContext_ApplicationProtocol alpn_result;
#endif

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436

  /* save the current session data for possible re-use */
  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    struct Curl_schannel_cred *old_cred = NULL;

    Curl_ssl_sessionid_lock(data);
    incache = !(Curl_ssl_getsessionid(data, conn, (void **)&old_cred, NULL,
                                      sockindex));
    if(incache) {
      if(old_cred != BACKEND->cred) {
        DEBUGF(infof(data,
                     "schannel: old credential handle is stale, removing\n"));
        /* we're not taking old_cred ownership here, no refcount++ is needed */
        Curl_ssl_delsessionid(data, (void *)old_cred);
        incache = FALSE;
      }
    }
    if(!incache) {
      result = Curl_ssl_addsessionid(data, conn, (void *)BACKEND->cred,
                                     sizeof(struct Curl_schannel_cred),
                                     sockindex);
      if(result) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "schannel: failed to store credential handle");
        return result;
      }







|
|










|







1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438

  /* save the current session data for possible re-use */
  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    struct Curl_schannel_cred *old_cred = NULL;

    Curl_ssl_sessionid_lock(data);
    incache = !(Curl_ssl_getsessionid(data, conn, isproxy, (void **)&old_cred,
                                      NULL, sockindex));
    if(incache) {
      if(old_cred != BACKEND->cred) {
        DEBUGF(infof(data,
                     "schannel: old credential handle is stale, removing\n"));
        /* we're not taking old_cred ownership here, no refcount++ is needed */
        Curl_ssl_delsessionid(data, (void *)old_cred);
        incache = FALSE;
      }
    }
    if(!incache) {
      result = Curl_ssl_addsessionid(data, conn, isproxy, BACKEND->cred,
                                     sizeof(struct Curl_schannel_cred),
                                     sockindex);
      if(result) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "schannel: failed to store credential handle");
        return result;
      }
2414
2415
2416
2417
2418
2419
2420

2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
  Curl_none_check_cxn,               /* check_cxn */
  schannel_shutdown,                 /* shutdown */
  schannel_data_pending,             /* data_pending */
  schannel_random,                   /* random */
  Curl_none_cert_status_request,     /* cert_status_request */
  schannel_connect,                  /* connect */
  schannel_connect_nonblocking,      /* connect_nonblocking */

  schannel_get_internals,            /* get_internals */
  schannel_close,                    /* close_one */
  Curl_none_close_all,               /* close_all */
  schannel_session_free,             /* session_free */
  Curl_none_set_engine,              /* set_engine */
  Curl_none_set_engine_default,      /* set_engine_default */
  Curl_none_engines_list,            /* engines_list */
  Curl_none_false_start,             /* false_start */
  schannel_sha256sum                 /* sha256sum */
};

#endif /* USE_SCHANNEL */







>












2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
  Curl_none_check_cxn,               /* check_cxn */
  schannel_shutdown,                 /* shutdown */
  schannel_data_pending,             /* data_pending */
  schannel_random,                   /* random */
  Curl_none_cert_status_request,     /* cert_status_request */
  schannel_connect,                  /* connect */
  schannel_connect_nonblocking,      /* connect_nonblocking */
  Curl_ssl_getsock,                  /* getsock */
  schannel_get_internals,            /* get_internals */
  schannel_close,                    /* close_one */
  Curl_none_close_all,               /* close_all */
  schannel_session_free,             /* session_free */
  Curl_none_set_engine,              /* set_engine */
  Curl_none_set_engine_default,      /* set_engine_default */
  Curl_none_engines_list,            /* engines_list */
  Curl_none_false_start,             /* false_start */
  schannel_sha256sum                 /* sha256sum */
};

#endif /* USE_SCHANNEL */
Changes to jni/curl/lib/vtls/schannel_verify.c.
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
    ChainPara.cbSize = sizeof(ChainPara);

    if(!CertGetCertificateChain(cert_chain_engine,
                                pCertContextServer,
                                NULL,
                                pCertContextServer->hCertStore,
                                &ChainPara,
                                (data->set.ssl.no_revoke ? 0 :
                                 CERT_CHAIN_REVOCATION_CHECK_CHAIN),
                                NULL,
                                &pChainContext)) {
      char buffer[STRERROR_LEN];
      failf(data, "schannel: CertGetCertificateChain failed: %s",
            Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
      pChainContext = NULL;







|







620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
    ChainPara.cbSize = sizeof(ChainPara);

    if(!CertGetCertificateChain(cert_chain_engine,
                                pCertContextServer,
                                NULL,
                                pCertContextServer->hCertStore,
                                &ChainPara,
                                (SSL_SET_OPTION(no_revoke) ? 0 :
                                 CERT_CHAIN_REVOCATION_CHECK_CHAIN),
                                NULL,
                                &pChainContext)) {
      char buffer[STRERROR_LEN];
      failf(data, "schannel: CertGetCertificateChain failed: %s",
            Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
      pChainContext = NULL;
Changes to jni/curl/lib/vtls/sectransp.c.
1396
1397
1398
1399
1400
1401
1402

1403
1404
1405
1406

1407
1408
1409
1410
1411
1412
1413
  struct ssl_backend_data *backend = connssl->backend;
  const char * const ssl_cafile = SSL_CONN_CONFIG(CAfile);
  const struct curl_blob *ssl_cablob = NULL;
  const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
  char * const ssl_cert = SSL_SET_OPTION(primary.clientcert);
  const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
#ifndef CURL_DISABLE_PROXY

  const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
    conn->host.name;
  const long int port = SSL_IS_PROXY() ? conn->port : conn->remote_port;
#else

  const char * const hostname = conn->host.name;
  const long int port = conn->remote_port;
#endif
#ifdef ENABLE_IPV6
  struct in6_addr addr;
#else
  struct in_addr addr;







>
|



>







1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
  struct ssl_backend_data *backend = connssl->backend;
  const char * const ssl_cafile = SSL_CONN_CONFIG(CAfile);
  const struct curl_blob *ssl_cablob = NULL;
  const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
  char * const ssl_cert = SSL_SET_OPTION(primary.clientcert);
  const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
#ifndef CURL_DISABLE_PROXY
  bool isproxy = SSL_IS_PROXY();
  const char * const hostname = isproxy ? conn->http_proxy.host.name :
    conn->host.name;
  const long int port = SSL_IS_PROXY() ? conn->port : conn->remote_port;
#else
  const isproxy = FALSE;
  const char * const hostname = conn->host.name;
  const long int port = conn->remote_port;
#endif
#ifdef ENABLE_IPV6
  struct in6_addr addr;
#else
  struct in_addr addr;
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
#if (CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11) && HAVE_BUILTIN_AVAILABLE == 1
  if(conn->bits.tls_enable_alpn) {
    if(__builtin_available(macOS 10.13.4, iOS 11, tvOS 11, *)) {
      CFMutableArrayRef alpnArr = CFArrayCreateMutable(NULL, 0,
                                                       &kCFTypeArrayCallBacks);

#ifdef USE_NGHTTP2
      if(data->set.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
         && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
        ) {
        CFArrayAppendValue(alpnArr, CFSTR(NGHTTP2_PROTO_VERSION_ID));
        infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
      }
#endif








|

|







1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
#if (CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11) && HAVE_BUILTIN_AVAILABLE == 1
  if(conn->bits.tls_enable_alpn) {
    if(__builtin_available(macOS 10.13.4, iOS 11, tvOS 11, *)) {
      CFMutableArrayRef alpnArr = CFArrayCreateMutable(NULL, 0,
                                                       &kCFTypeArrayCallBacks);

#ifdef USE_NGHTTP2
      if(data->state.httpversion >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
         && (!isproxy || !conn->bits.tunnel_proxy)
#endif
        ) {
        CFArrayAppendValue(alpnArr, CFSTR(NGHTTP2_PROTO_VERSION_ID));
        infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
      }
#endif

1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
  }

#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
  /* We want to enable 1/n-1 when using a CBC cipher unless the user
     specifically doesn't want us doing that: */
  if(SSLSetSessionOption != NULL) {
    SSLSetSessionOption(backend->ssl_ctx, kSSLSessionOptionSendOneByteRecord,
                      !data->set.ssl.enable_beast);
    SSLSetSessionOption(backend->ssl_ctx, kSSLSessionOptionFalseStart,
                      data->set.ssl.falsestart); /* false start support */
  }
#endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    char *ssl_sessionid;
    size_t ssl_sessionid_len;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, (void **)&ssl_sessionid,
                              &ssl_sessionid_len, sockindex)) {
      /* we got a session id, use it! */
      err = SSLSetPeerID(backend->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
      Curl_ssl_sessionid_unlock(data);
      if(err != noErr) {
        failf(data, "SSL: SSLSetPeerID() failed: OSStatus %d", err);
        return CURLE_SSL_CONNECT_ERROR;







|











|







1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
  }

#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
  /* We want to enable 1/n-1 when using a CBC cipher unless the user
     specifically doesn't want us doing that: */
  if(SSLSetSessionOption != NULL) {
    SSLSetSessionOption(backend->ssl_ctx, kSSLSessionOptionSendOneByteRecord,
                        !SSL_SET_OPTION(enable_beast));
    SSLSetSessionOption(backend->ssl_ctx, kSSLSessionOptionFalseStart,
                      data->set.ssl.falsestart); /* false start support */
  }
#endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    char *ssl_sessionid;
    size_t ssl_sessionid_len;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, isproxy, (void **)&ssl_sessionid,
                              &ssl_sessionid_len, sockindex)) {
      /* we got a session id, use it! */
      err = SSLSetPeerID(backend->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
      Curl_ssl_sessionid_unlock(data);
      if(err != noErr) {
        failf(data, "SSL: SSLSetPeerID() failed: OSStatus %d", err);
        return CURLE_SSL_CONNECT_ERROR;
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
      err = SSLSetPeerID(backend->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
      if(err != noErr) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "SSL: SSLSetPeerID() failed: OSStatus %d", err);
        return CURLE_SSL_CONNECT_ERROR;
      }

      result = Curl_ssl_addsessionid(data, conn, ssl_sessionid,
                                     ssl_sessionid_len, sockindex);
      Curl_ssl_sessionid_unlock(data);
      if(result) {
        failf(data, "failed to store ssl session");
        return result;
      }
    }







|







1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
      err = SSLSetPeerID(backend->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
      if(err != noErr) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "SSL: SSLSetPeerID() failed: OSStatus %d", err);
        return CURLE_SSL_CONNECT_ERROR;
      }

      result = Curl_ssl_addsessionid(data, conn, isproxy, ssl_sessionid,
                                     ssl_sessionid_len, sockindex);
      Curl_ssl_sessionid_unlock(data);
      if(result) {
        failf(data, "failed to store ssl session");
        return result;
      }
    }
2617
2618
2619
2620
2621
2622
2623
2624

2625
2626
2627
2628
2629
2630
2631
2632
2633
    return CURLE_SSL_CONNECT_ERROR;
  }
  else {
    /* we have been connected fine, we're not waiting for anything else. */
    connssl->connecting_state = ssl_connect_3;

#ifdef SECTRANSP_PINNEDPUBKEY
    if(data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]) {

      CURLcode result = pkp_pin_peer_pubkey(data, backend->ssl_ctx,
                            data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]);
      if(result) {
        failf(data, "SSL: public key does not match pinned public key!");
        return result;
      }
    }
#endif /* SECTRANSP_PINNEDPUBKEY */








|
>
|
|







2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
    return CURLE_SSL_CONNECT_ERROR;
  }
  else {
    /* we have been connected fine, we're not waiting for anything else. */
    connssl->connecting_state = ssl_connect_3;

#ifdef SECTRANSP_PINNEDPUBKEY
    if(data->set.str[STRING_SSL_PINNEDPUBLICKEY]) {
      CURLcode result =
        pkp_pin_peer_pubkey(data, backend->ssl_ctx,
                            data->set.str[STRING_SSL_PINNEDPUBLICKEY]);
      if(result) {
        failf(data, "SSL: public key does not match pinned public key!");
        return result;
      }
    }
#endif /* SECTRANSP_PINNEDPUBKEY */

3297
3298
3299
3300
3301
3302
3303

3304
3305
3306
3307
3308
3309
3310
  sectransp_check_cxn,                /* check_cxn */
  sectransp_shutdown,                 /* shutdown */
  sectransp_data_pending,             /* data_pending */
  sectransp_random,                   /* random */
  Curl_none_cert_status_request,      /* cert_status_request */
  sectransp_connect,                  /* connect */
  sectransp_connect_nonblocking,      /* connect_nonblocking */

  sectransp_get_internals,            /* get_internals */
  sectransp_close,                    /* close_one */
  Curl_none_close_all,                /* close_all */
  sectransp_session_free,             /* session_free */
  Curl_none_set_engine,               /* set_engine */
  Curl_none_set_engine_default,       /* set_engine_default */
  Curl_none_engines_list,             /* engines_list */







>







3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
  sectransp_check_cxn,                /* check_cxn */
  sectransp_shutdown,                 /* shutdown */
  sectransp_data_pending,             /* data_pending */
  sectransp_random,                   /* random */
  Curl_none_cert_status_request,      /* cert_status_request */
  sectransp_connect,                  /* connect */
  sectransp_connect_nonblocking,      /* connect_nonblocking */
  Curl_ssl_getsock,                   /* getsock */
  sectransp_get_internals,            /* get_internals */
  sectransp_close,                    /* close_one */
  Curl_none_close_all,                /* close_all */
  sectransp_session_free,             /* session_free */
  Curl_none_set_engine,               /* set_engine */
  Curl_none_set_engine_default,       /* set_engine_default */
  Curl_none_engines_list,             /* engines_list */
Changes to jni/curl/lib/vtls/vtls.c.
363
364
365
366
367
368
369

370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393

394





395
396
397
398
399
400
401

/*
 * Check if there's a session ID for the given connection in the cache, and if
 * there's one suitable, it is provided. Returns TRUE when no entry matched.
 */
bool Curl_ssl_getsessionid(struct Curl_easy *data,
                           struct connectdata *conn,

                           void **ssl_sessionid,
                           size_t *idsize, /* set 0 if unknown */
                           int sockindex)
{
  struct Curl_ssl_session *check;
  size_t i;
  long *general_age;
  bool no_match = TRUE;

#ifndef CURL_DISABLE_PROXY
  const bool isProxy = CONNECT_PROXY_SSL();
  struct ssl_primary_config * const ssl_config = isProxy ?
    &conn->proxy_ssl_config :
    &conn->ssl_config;
  const char * const name = isProxy ?
    conn->http_proxy.host.name : conn->host.name;
  int port = isProxy ? (int)conn->port : conn->remote_port;
#else
  /* no proxy support */
  struct ssl_primary_config * const ssl_config = &conn->ssl_config;
  const char * const name = conn->host.name;
  int port = conn->remote_port;
  (void)sockindex;
#endif

  *ssl_sessionid = NULL;






  DEBUGASSERT(SSL_SET_OPTION(primary.sessionid));

  if(!SSL_SET_OPTION(primary.sessionid))
    /* session ID re-use is disabled */
    return TRUE;








>










<











<

>

>
>
>
>
>







363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380

381
382
383
384
385
386
387
388
389
390
391

392
393
394
395
396
397
398
399
400
401
402
403
404
405
406

/*
 * Check if there's a session ID for the given connection in the cache, and if
 * there's one suitable, it is provided. Returns TRUE when no entry matched.
 */
bool Curl_ssl_getsessionid(struct Curl_easy *data,
                           struct connectdata *conn,
                           const bool isProxy,
                           void **ssl_sessionid,
                           size_t *idsize, /* set 0 if unknown */
                           int sockindex)
{
  struct Curl_ssl_session *check;
  size_t i;
  long *general_age;
  bool no_match = TRUE;

#ifndef CURL_DISABLE_PROXY

  struct ssl_primary_config * const ssl_config = isProxy ?
    &conn->proxy_ssl_config :
    &conn->ssl_config;
  const char * const name = isProxy ?
    conn->http_proxy.host.name : conn->host.name;
  int port = isProxy ? (int)conn->port : conn->remote_port;
#else
  /* no proxy support */
  struct ssl_primary_config * const ssl_config = &conn->ssl_config;
  const char * const name = conn->host.name;
  int port = conn->remote_port;

#endif
  (void)sockindex;
  *ssl_sessionid = NULL;

#ifdef CURL_DISABLE_PROXY
  if(isProxy)
    return TRUE;
#endif

  DEBUGASSERT(SSL_SET_OPTION(primary.sessionid));

  if(!SSL_SET_OPTION(primary.sessionid))
    /* session ID re-use is disabled */
    return TRUE;

476
477
478
479
480
481
482

483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507

508
509
510
511
512
513
514
 * Store session id in the session cache. The ID passed on to this function
 * must already have been extracted and allocated the proper way for the SSL
 * layer. Curl_XXXX_session_free() will be called to free/kill the session ID
 * later on.
 */
CURLcode Curl_ssl_addsessionid(struct Curl_easy *data,
                               struct connectdata *conn,

                               void *ssl_sessionid,
                               size_t idsize,
                               int sockindex)
{
  size_t i;
  struct Curl_ssl_session *store = &data->state.session[0];
  long oldest_age = data->state.session[0].age; /* zero if unused */
  char *clone_host;
  char *clone_conn_to_host;
  int conn_to_port;
  long *general_age;
#ifndef CURL_DISABLE_PROXY
  const bool isProxy = CONNECT_PROXY_SSL();
  struct ssl_primary_config * const ssl_config = isProxy ?
    &conn->proxy_ssl_config :
    &conn->ssl_config;
  const char *hostname = isProxy ? conn->http_proxy.host.name :
    conn->host.name;
#else
  /* proxy support disabled */
  const bool isProxy = FALSE;
  struct ssl_primary_config * const ssl_config = &conn->ssl_config;
  const char *hostname = conn->host.name;
  (void)sockindex;
#endif

  DEBUGASSERT(SSL_SET_OPTION(primary.sessionid));

  clone_host = strdup(hostname);
  if(!clone_host)
    return CURLE_OUT_OF_MEMORY; /* bail out */

  if(conn->bits.conn_to_host) {







>












<






<
<


<

>







481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500

501
502
503
504
505
506


507
508

509
510
511
512
513
514
515
516
517
 * Store session id in the session cache. The ID passed on to this function
 * must already have been extracted and allocated the proper way for the SSL
 * layer. Curl_XXXX_session_free() will be called to free/kill the session ID
 * later on.
 */
CURLcode Curl_ssl_addsessionid(struct Curl_easy *data,
                               struct connectdata *conn,
                               bool isProxy,
                               void *ssl_sessionid,
                               size_t idsize,
                               int sockindex)
{
  size_t i;
  struct Curl_ssl_session *store = &data->state.session[0];
  long oldest_age = data->state.session[0].age; /* zero if unused */
  char *clone_host;
  char *clone_conn_to_host;
  int conn_to_port;
  long *general_age;
#ifndef CURL_DISABLE_PROXY

  struct ssl_primary_config * const ssl_config = isProxy ?
    &conn->proxy_ssl_config :
    &conn->ssl_config;
  const char *hostname = isProxy ? conn->http_proxy.host.name :
    conn->host.name;
#else


  struct ssl_primary_config * const ssl_config = &conn->ssl_config;
  const char *hostname = conn->host.name;

#endif
  (void)sockindex;
  DEBUGASSERT(SSL_SET_OPTION(primary.sessionid));

  clone_host = strdup(hostname);
  if(!clone_host)
    return CURLE_OUT_OF_MEMORY; /* bail out */

  if(conn->bits.conn_to_host) {
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
    /* free the cache data */
    Curl_safefree(data->state.session);
  }

  Curl_ssl->close_all(data);
}

#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
  defined(USE_SECTRANSP) || defined(USE_NSS) || \
  defined(USE_MBEDTLS) || defined(USE_WOLFSSL) || defined(USE_BEARSSL)
int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks)
{
  struct ssl_connect_data *connssl = &conn->ssl[FIRSTSOCKET];

  if(connssl->connecting_state == ssl_connect_2_writing) {
    /* write mode */
    socks[0] = conn->sock[FIRSTSOCKET];
    return GETSOCK_WRITESOCK(0);
  }
  if(connssl->connecting_state == ssl_connect_2_reading) {
    /* read mode */
    socks[0] = conn->sock[FIRSTSOCKET];
    return GETSOCK_READSOCK(0);
  }

  return GETSOCK_BLANK;
}
#else
int Curl_ssl_getsock(struct connectdata *conn,
                     curl_socket_t *socks)
{
  (void)conn;
  (void)socks;
  return GETSOCK_BLANK;
}
/* USE_OPENSSL || USE_GNUTLS || USE_SCHANNEL || USE_SECTRANSP || USE_NSS */
#endif

void Curl_ssl_close(struct Curl_easy *data, struct connectdata *conn,
                    int sockindex)
{
  DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
  Curl_ssl->close_one(data, conn, sockindex);
  conn->ssl[sockindex].state = ssl_connection_none;







<
<
<

















<
<
<
<
<
<
<
<
<
<







592
593
594
595
596
597
598



599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615










616
617
618
619
620
621
622
    /* free the cache data */
    Curl_safefree(data->state.session);
  }

  Curl_ssl->close_all(data);
}




int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks)
{
  struct ssl_connect_data *connssl = &conn->ssl[FIRSTSOCKET];

  if(connssl->connecting_state == ssl_connect_2_writing) {
    /* write mode */
    socks[0] = conn->sock[FIRSTSOCKET];
    return GETSOCK_WRITESOCK(0);
  }
  if(connssl->connecting_state == ssl_connect_2_reading) {
    /* read mode */
    socks[0] = conn->sock[FIRSTSOCKET];
    return GETSOCK_READSOCK(0);
  }

  return GETSOCK_BLANK;
}











void Curl_ssl_close(struct Curl_easy *data, struct connectdata *conn,
                    int sockindex)
{
  DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
  Curl_ssl->close_one(data, conn, sockindex);
  conn->ssl[sockindex].state = ssl_connection_none;
1165
1166
1167
1168
1169
1170
1171







1172
1173
1174
1175
1176
1177
1178
                                             struct connectdata *conn,
                                             int sockindex, bool *done)
{
  if(multissl_setup(NULL))
    return CURLE_FAILED_INIT;
  return Curl_ssl->connect_nonblocking(data, conn, sockindex, done);
}








static void *multissl_get_internals(struct ssl_connect_data *connssl,
                                    CURLINFO info)
{
  if(multissl_setup(NULL))
    return NULL;
  return Curl_ssl->get_internals(connssl, info);







>
>
>
>
>
>
>







1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
                                             struct connectdata *conn,
                                             int sockindex, bool *done)
{
  if(multissl_setup(NULL))
    return CURLE_FAILED_INIT;
  return Curl_ssl->connect_nonblocking(data, conn, sockindex, done);
}

static int multissl_getsock(struct connectdata *conn, curl_socket_t *socks)
{
  if(multissl_setup(NULL))
    return 0;
  return Curl_ssl->getsock(conn, socks);
}

static void *multissl_get_internals(struct ssl_connect_data *connssl,
                                    CURLINFO info)
{
  if(multissl_setup(NULL))
    return NULL;
  return Curl_ssl->get_internals(connssl, info);
1197
1198
1199
1200
1201
1202
1203

1204
1205
1206
1207
1208
1209
1210
  Curl_none_check_cxn,               /* check_cxn */
  Curl_none_shutdown,                /* shutdown */
  Curl_none_data_pending,            /* data_pending */
  Curl_none_random,                  /* random */
  Curl_none_cert_status_request,     /* cert_status_request */
  multissl_connect,                  /* connect */
  multissl_connect_nonblocking,      /* connect_nonblocking */

  multissl_get_internals,            /* get_internals */
  multissl_close,                    /* close_one */
  Curl_none_close_all,               /* close_all */
  Curl_none_session_free,            /* session_free */
  Curl_none_set_engine,              /* set_engine */
  Curl_none_set_engine_default,      /* set_engine_default */
  Curl_none_engines_list,            /* engines_list */







>







1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
  Curl_none_check_cxn,               /* check_cxn */
  Curl_none_shutdown,                /* shutdown */
  Curl_none_data_pending,            /* data_pending */
  Curl_none_random,                  /* random */
  Curl_none_cert_status_request,     /* cert_status_request */
  multissl_connect,                  /* connect */
  multissl_connect_nonblocking,      /* connect_nonblocking */
  multissl_getsock,                  /* getsock */
  multissl_get_internals,            /* get_internals */
  multissl_close,                    /* close_one */
  Curl_none_close_all,               /* close_all */
  Curl_none_session_free,            /* session_free */
  Curl_none_set_engine,              /* set_engine */
  Curl_none_set_engine_default,      /* set_engine_default */
  Curl_none_engines_list,            /* engines_list */
1223
1224
1225
1226
1227
1228
1229


1230
1231
1232
1233
1234
1235
1236
  &Curl_ssl_gnutls;
#elif defined(USE_GSKIT)
  &Curl_ssl_gskit;
#elif defined(USE_MBEDTLS)
  &Curl_ssl_mbedtls;
#elif defined(USE_NSS)
  &Curl_ssl_nss;


#elif defined(USE_OPENSSL)
  &Curl_ssl_openssl;
#elif defined(USE_SCHANNEL)
  &Curl_ssl_schannel;
#elif defined(USE_MESALINK)
  &Curl_ssl_mesalink;
#elif defined(USE_BEARSSL)







>
>







1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
  &Curl_ssl_gnutls;
#elif defined(USE_GSKIT)
  &Curl_ssl_gskit;
#elif defined(USE_MBEDTLS)
  &Curl_ssl_mbedtls;
#elif defined(USE_NSS)
  &Curl_ssl_nss;
#elif defined(USE_RUSTLS)
  &Curl_ssl_rustls;
#elif defined(USE_OPENSSL)
  &Curl_ssl_openssl;
#elif defined(USE_SCHANNEL)
  &Curl_ssl_schannel;
#elif defined(USE_MESALINK)
  &Curl_ssl_mesalink;
#elif defined(USE_BEARSSL)
1265
1266
1267
1268
1269
1270
1271



1272
1273
1274
1275
1276
1277
1278
  &Curl_ssl_schannel,
#endif
#if defined(USE_MESALINK)
  &Curl_ssl_mesalink,
#endif
#if defined(USE_BEARSSL)
  &Curl_ssl_bearssl,



#endif
  NULL
};

static size_t multissl_version(char *buffer, size_t size)
{
  static const struct Curl_ssl *selected;







>
>
>







1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
  &Curl_ssl_schannel,
#endif
#if defined(USE_MESALINK)
  &Curl_ssl_mesalink,
#endif
#if defined(USE_BEARSSL)
  &Curl_ssl_bearssl,
#endif
#if defined(USE_RUSTLS)
  &Curl_ssl_rustls,
#endif
  NULL
};

static size_t multissl_version(char *buffer, size_t size)
{
  static const struct Curl_ssl *selected;
Changes to jni/curl/lib/vtls/vtls.h.
58
59
60
61
62
63
64








65
66
67
68
69
70
71
  bool (*cert_status_request)(void);

  CURLcode (*connect_blocking)(struct Curl_easy *data,
                               struct connectdata *conn, int sockindex);
  CURLcode (*connect_nonblocking)(struct Curl_easy *data,
                                  struct connectdata *conn, int sockindex,
                                  bool *done);








  void *(*get_internals)(struct ssl_connect_data *connssl, CURLINFO info);
  void (*close_one)(struct Curl_easy *data, struct connectdata *conn,
                    int sockindex);
  void (*close_all)(struct Curl_easy *data);
  void (*session_free)(void *ptr);

  CURLcode (*set_engine)(struct Curl_easy *data, const char *engine);







>
>
>
>
>
>
>
>







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  bool (*cert_status_request)(void);

  CURLcode (*connect_blocking)(struct Curl_easy *data,
                               struct connectdata *conn, int sockindex);
  CURLcode (*connect_nonblocking)(struct Curl_easy *data,
                                  struct connectdata *conn, int sockindex,
                                  bool *done);

  /* If the SSL backend wants to read or write on this connection during a
     handshake, set socks[0] to the connection's FIRSTSOCKET, and return
     a bitmap indicating read or write with GETSOCK_WRITESOCK(0) or
     GETSOCK_READSOCK(0). Otherwise return GETSOCK_BLANK.
     Mandatory. */
  int (*getsock)(struct connectdata *conn, curl_socket_t *socks);

  void *(*get_internals)(struct ssl_connect_data *connssl, CURLINFO info);
  void (*close_one)(struct Curl_easy *data, struct connectdata *conn,
                    int sockindex);
  void (*close_all)(struct Curl_easy *data);
  void (*session_free)(void *ptr);

  CURLcode (*set_engine)(struct Curl_easy *data, const char *engine);
104
105
106
107
108
109
110

111
112
113
114
115
116
117
#include "gskit.h"          /* Global Secure ToolKit versions */
#include "wolfssl.h"        /* wolfSSL versions */
#include "schannel.h"       /* Schannel SSPI version */
#include "sectransp.h"      /* SecureTransport (Darwin) version */
#include "mbedtls.h"        /* mbedTLS versions */
#include "mesalink.h"       /* MesaLink versions */
#include "bearssl.h"        /* BearSSL versions */


#ifndef MAX_PINNED_PUBKEY_SIZE
#define MAX_PINNED_PUBKEY_SIZE 1048576 /* 1MB */
#endif

#ifndef CURL_SHA256_DIGEST_LENGTH
#define CURL_SHA256_DIGEST_LENGTH 32 /* fixed size */







>







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "gskit.h"          /* Global Secure ToolKit versions */
#include "wolfssl.h"        /* wolfSSL versions */
#include "schannel.h"       /* Schannel SSPI version */
#include "sectransp.h"      /* SecureTransport (Darwin) version */
#include "mbedtls.h"        /* mbedTLS versions */
#include "mesalink.h"       /* MesaLink versions */
#include "bearssl.h"        /* BearSSL versions */
#include "rustls.h"         /* rustls versions */

#ifndef MAX_PINNED_PUBKEY_SIZE
#define MAX_PINNED_PUBKEY_SIZE 1048576 /* 1MB */
#endif

#ifndef CURL_SHA256_DIGEST_LENGTH
#define CURL_SHA256_DIGEST_LENGTH 32 /* fixed size */
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160




161
162
163
164
165
166
167
  (SSL_IS_PROXY() ? conn->proxy_ssl_config.var : conn->ssl_config.var)
#define SSL_HOST_NAME()                                                 \
  (SSL_IS_PROXY() ? conn->http_proxy.host.name : conn->host.name)
#define SSL_HOST_DISPNAME()                                             \
  (SSL_IS_PROXY() ? conn->http_proxy.host.dispname : conn->host.dispname)
#define SSL_PINNED_PUB_KEY() (SSL_IS_PROXY()                            \
  ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]                     \
  : data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG])
#else
#define SSL_IS_PROXY() FALSE
#define SSL_SET_OPTION(var) data->set.ssl.var
#define SSL_SET_OPTION_LVALUE(var) data->set.ssl.var
#define SSL_CONN_CONFIG(var) conn->ssl_config.var
#define SSL_HOST_NAME() conn->host.name
#define SSL_HOST_DISPNAME() conn->host.dispname
#define SSL_PINNED_PUB_KEY()                                            \
  data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]
#endif

bool Curl_ssl_config_matches(struct ssl_primary_config *data,
                             struct ssl_primary_config *needle);
bool Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
                                   struct ssl_primary_config *dest);
void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc);




int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks);

int Curl_ssl_backend(void);

#ifdef USE_SSL
int Curl_ssl_init(void);
void Curl_ssl_cleanup(void);







|








|







>
>
>
>







146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
  (SSL_IS_PROXY() ? conn->proxy_ssl_config.var : conn->ssl_config.var)
#define SSL_HOST_NAME()                                                 \
  (SSL_IS_PROXY() ? conn->http_proxy.host.name : conn->host.name)
#define SSL_HOST_DISPNAME()                                             \
  (SSL_IS_PROXY() ? conn->http_proxy.host.dispname : conn->host.dispname)
#define SSL_PINNED_PUB_KEY() (SSL_IS_PROXY()                            \
  ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]                     \
  : data->set.str[STRING_SSL_PINNEDPUBLICKEY])
#else
#define SSL_IS_PROXY() FALSE
#define SSL_SET_OPTION(var) data->set.ssl.var
#define SSL_SET_OPTION_LVALUE(var) data->set.ssl.var
#define SSL_CONN_CONFIG(var) conn->ssl_config.var
#define SSL_HOST_NAME() conn->host.name
#define SSL_HOST_DISPNAME() conn->host.dispname
#define SSL_PINNED_PUB_KEY()                                            \
  data->set.str[STRING_SSL_PINNEDPUBLICKEY]
#endif

bool Curl_ssl_config_matches(struct ssl_primary_config *data,
                             struct ssl_primary_config *needle);
bool Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
                                   struct ssl_primary_config *dest);
void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc);
/* An implementation of the getsock field of Curl_ssl that relies
   on the ssl_connect_state enum. Asks for read or write depending
   on whether conn->state is ssl_connect_2_reading or
   ssl_connect_2_writing. */
int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks);

int Curl_ssl_backend(void);

#ifdef USE_SSL
int Curl_ssl_init(void);
void Curl_ssl_cleanup(void);
218
219
220
221
222
223
224

225
226
227
228
229
230
231
232
233
234

235
236
237
238
239
240
241
 * Sessionid mutex must be locked (see Curl_ssl_sessionid_lock).
 * Caller must make sure that the ownership of returned sessionid object
 * is properly taken (e.g. its refcount is incremented
 * under sessionid mutex).
 */
bool Curl_ssl_getsessionid(struct Curl_easy *data,
                           struct connectdata *conn,

                           void **ssl_sessionid,
                           size_t *idsize, /* set 0 if unknown */
                           int sockindex);
/* add a new session ID
 * Sessionid mutex must be locked (see Curl_ssl_sessionid_lock).
 * Caller must ensure that it has properly shared ownership of this sessionid
 * object with cache (e.g. incrementing refcount on success)
 */
CURLcode Curl_ssl_addsessionid(struct Curl_easy *data,
                               struct connectdata *conn,

                               void *ssl_sessionid,
                               size_t idsize,
                               int sockindex);
/* Kill a single session ID entry in the cache
 * Sessionid mutex must be locked (see Curl_ssl_sessionid_lock).
 * This will call engine-specific curlssl_session_free function, which must
 * take sessionid object ownership from sessionid cache







>










>







231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
 * Sessionid mutex must be locked (see Curl_ssl_sessionid_lock).
 * Caller must make sure that the ownership of returned sessionid object
 * is properly taken (e.g. its refcount is incremented
 * under sessionid mutex).
 */
bool Curl_ssl_getsessionid(struct Curl_easy *data,
                           struct connectdata *conn,
                           const bool isproxy,
                           void **ssl_sessionid,
                           size_t *idsize, /* set 0 if unknown */
                           int sockindex);
/* add a new session ID
 * Sessionid mutex must be locked (see Curl_ssl_sessionid_lock).
 * Caller must ensure that it has properly shared ownership of this sessionid
 * object with cache (e.g. incrementing refcount on success)
 */
CURLcode Curl_ssl_addsessionid(struct Curl_easy *data,
                               struct connectdata *conn,
                               const bool isProxy,
                               void *ssl_sessionid,
                               size_t idsize,
                               int sockindex);
/* Kill a single session ID entry in the cache
 * Sessionid mutex must be locked (see Curl_ssl_sessionid_lock).
 * This will call engine-specific curlssl_session_free function, which must
 * take sessionid object ownership from sessionid cache
Changes to jni/curl/lib/vtls/wolfssl.c.
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
    char protocols[128];
    *protocols = '\0';

    /* wolfSSL's ALPN protocol name list format is a comma separated string of
       protocols in descending order of preference, eg: "h2,http/1.1" */

#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2) {
      strcpy(protocols + strlen(protocols), NGHTTP2_PROTO_VERSION_ID ",");
      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
    }
#endif

    strcpy(protocols + strlen(protocols), ALPN_HTTP_1_1);
    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);







|







471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
    char protocols[128];
    *protocols = '\0';

    /* wolfSSL's ALPN protocol name list format is a comma separated string of
       protocols in descending order of preference, eg: "h2,http/1.1" */

#ifdef USE_NGHTTP2
    if(data->state.httpversion >= CURL_HTTP_VERSION_2) {
      strcpy(protocols + strlen(protocols), NGHTTP2_PROTO_VERSION_ID ",");
      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
    }
#endif

    strcpy(protocols + strlen(protocols), ALPN_HTTP_1_1);
    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);
512
513
514
515
516
517
518
519


520
521
522
523
524
525
526
#endif /* HAVE_SECURE_RENEGOTIATION */

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid = NULL;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn, &ssl_sessionid, NULL, sockindex)) {


      /* we got a session id, use it! */
      if(!SSL_set_session(backend->handle, ssl_sessionid)) {
        char error_buffer[WOLFSSL_MAX_ERROR_SZ];
        Curl_ssl_sessionid_unlock(data);
        failf(data, "SSL: SSL_set_session failed: %s",
              ERR_error_string(SSL_get_error(backend->handle, 0),
                               error_buffer));







|
>
>







512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
#endif /* HAVE_SECURE_RENEGOTIATION */

  /* Check if there's a cached ID we can/should use here! */
  if(SSL_SET_OPTION(primary.sessionid)) {
    void *ssl_sessionid = NULL;

    Curl_ssl_sessionid_lock(data);
    if(!Curl_ssl_getsessionid(data, conn,
                              SSL_IS_PROXY() ? TRUE : FALSE,
                              &ssl_sessionid, NULL, sockindex)) {
      /* we got a session id, use it! */
      if(!SSL_set_session(backend->handle, ssl_sessionid)) {
        char error_buffer[WOLFSSL_MAX_ERROR_SZ];
        Curl_ssl_sessionid_unlock(data);
        failf(data, "SSL: SSL_set_session failed: %s",
              ERR_error_string(SSL_get_error(backend->handle, 0),
                               error_buffer));
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
#ifndef CURL_DISABLE_PROXY
  const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
    conn->host.name;
  const char * const dispname = SSL_IS_PROXY() ?
    conn->http_proxy.host.dispname : conn->host.dispname;
  const char * const pinnedpubkey = SSL_IS_PROXY() ?
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
#else
  const char * const hostname = conn->host.name;
  const char * const dispname = conn->host.dispname;
  const char * const pinnedpubkey =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
#endif

  conn->recv[sockindex] = wolfssl_recv;
  conn->send[sockindex] = wolfssl_send;

  /* Enable RFC2818 checks */
  if(SSL_CONN_CONFIG(verifyhost)) {







|




|







555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
#ifndef CURL_DISABLE_PROXY
  const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
    conn->host.name;
  const char * const dispname = SSL_IS_PROXY() ?
    conn->http_proxy.host.dispname : conn->host.dispname;
  const char * const pinnedpubkey = SSL_IS_PROXY() ?
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
#else
  const char * const hostname = conn->host.name;
  const char * const dispname = conn->host.dispname;
  const char * const pinnedpubkey =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
#endif

  conn->recv[sockindex] = wolfssl_recv;
  conn->send[sockindex] = wolfssl_send;

  /* Enable RFC2818 checks */
  if(SSL_CONN_CONFIG(verifyhost)) {
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
      infof(data, "ALPN, server accepted to use %.*s\n", protocol_len,
            protocol);

      if(protocol_len == ALPN_HTTP_1_1_LENGTH &&
         !memcmp(protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH))
        conn->negnpn = CURL_HTTP_VERSION_1_1;
#ifdef USE_NGHTTP2
      else if(data->set.httpversion >= CURL_HTTP_VERSION_2 &&
              protocol_len == NGHTTP2_PROTO_VERSION_ID_LEN &&
              !memcmp(protocol, NGHTTP2_PROTO_VERSION_ID,
                      NGHTTP2_PROTO_VERSION_ID_LEN))
        conn->negnpn = CURL_HTTP_VERSION_2;
#endif
      else
        infof(data, "ALPN, unrecognized protocol %.*s\n", protocol_len,







|







722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
      infof(data, "ALPN, server accepted to use %.*s\n", protocol_len,
            protocol);

      if(protocol_len == ALPN_HTTP_1_1_LENGTH &&
         !memcmp(protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH))
        conn->negnpn = CURL_HTTP_VERSION_1_1;
#ifdef USE_NGHTTP2
      else if(data->state.httpversion >= CURL_HTTP_VERSION_2 &&
              protocol_len == NGHTTP2_PROTO_VERSION_ID_LEN &&
              !memcmp(protocol, NGHTTP2_PROTO_VERSION_ID,
                      NGHTTP2_PROTO_VERSION_ID_LEN))
        conn->negnpn = CURL_HTTP_VERSION_2;
#endif
      else
        infof(data, "ALPN, unrecognized protocol %.*s\n", protocol_len,
766
767
768
769
770
771
772
773
774
775
776

777

778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798

799
800
801
802
803
804
805
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);

  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    SSL_SESSION *our_ssl_sessionid;
    void *old_ssl_sessionid = NULL;

    our_ssl_sessionid = SSL_get_session(backend->handle);



    Curl_ssl_sessionid_lock(data);
    incache = !(Curl_ssl_getsessionid(data, conn, &old_ssl_sessionid, NULL,
                                      sockindex));
    if(incache) {
      if(old_ssl_sessionid != our_ssl_sessionid) {
        infof(data, "old SSL session ID is stale, removing\n");
        Curl_ssl_delsessionid(data, old_ssl_sessionid);
        incache = FALSE;
      }
    }

    if(!incache) {
      result = Curl_ssl_addsessionid(data, conn, our_ssl_sessionid,
                                     0 /* unknown size */, sockindex);
      if(result) {
        Curl_ssl_sessionid_unlock(data);
        failf(data, "failed to store ssl session");
        return result;
      }
    }
    Curl_ssl_sessionid_unlock(data);

  }

  connssl->connecting_state = ssl_connect_done;

  return result;
}








<

<
|
>

>
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
>







768
769
770
771
772
773
774

775

776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_backend_data *backend = connssl->backend;

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);

  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;

    void *old_ssl_sessionid = NULL;

    SSL_SESSION *our_ssl_sessionid = SSL_get_session(backend->handle);
    bool isproxy = SSL_IS_PROXY() ? TRUE : FALSE;

    if(our_ssl_sessionid) {
      Curl_ssl_sessionid_lock(data);
      incache = !(Curl_ssl_getsessionid(data, conn, isproxy,
                                        &old_ssl_sessionid, NULL, sockindex));
      if(incache) {
        if(old_ssl_sessionid != our_ssl_sessionid) {
          infof(data, "old SSL session ID is stale, removing\n");
          Curl_ssl_delsessionid(data, old_ssl_sessionid);
          incache = FALSE;
        }
      }

      if(!incache) {
        result = Curl_ssl_addsessionid(data, conn, isproxy, our_ssl_sessionid,
                                       0, sockindex);
        if(result) {
          Curl_ssl_sessionid_unlock(data);
          failf(data, "failed to store ssl session");
          return result;
        }
      }
      Curl_ssl_sessionid_unlock(data);
    }
  }

  connssl->connecting_state = ssl_connect_done;

  return result;
}

1148
1149
1150
1151
1152
1153
1154

1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
  Curl_none_check_cxn,             /* check_cxn */
  wolfssl_shutdown,                /* shutdown */
  wolfssl_data_pending,            /* data_pending */
  wolfssl_random,                  /* random */
  Curl_none_cert_status_request,   /* cert_status_request */
  wolfssl_connect,                 /* connect */
  wolfssl_connect_nonblocking,     /* connect_nonblocking */

  wolfssl_get_internals,           /* get_internals */
  wolfssl_close,                   /* close_one */
  Curl_none_close_all,             /* close_all */
  wolfssl_session_free,            /* session_free */
  Curl_none_set_engine,            /* set_engine */
  Curl_none_set_engine_default,    /* set_engine_default */
  Curl_none_engines_list,          /* engines_list */
  Curl_none_false_start,           /* false_start */
  wolfssl_sha256sum                /* sha256sum */
};

#endif







>












1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
  Curl_none_check_cxn,             /* check_cxn */
  wolfssl_shutdown,                /* shutdown */
  wolfssl_data_pending,            /* data_pending */
  wolfssl_random,                  /* random */
  Curl_none_cert_status_request,   /* cert_status_request */
  wolfssl_connect,                 /* connect */
  wolfssl_connect_nonblocking,     /* connect_nonblocking */
  Curl_ssl_getsock,                /* getsock */
  wolfssl_get_internals,           /* get_internals */
  wolfssl_close,                   /* close_one */
  Curl_none_close_all,             /* close_all */
  wolfssl_session_free,            /* session_free */
  Curl_none_set_engine,            /* set_engine */
  Curl_none_set_engine_default,    /* set_engine_default */
  Curl_none_engines_list,          /* engines_list */
  Curl_none_false_start,           /* false_start */
  wolfssl_sha256sum                /* sha256sum */
};

#endif
jni/curl/ltmain.sh became executable.
Changes to jni/curl/m4/curl-confopts.m4.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
dnl --enable-threaded-resolver or --disable-threaded-resolver, and
dnl set shell variable want_thres as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_THREADED_RESOLVER], [
  AC_MSG_CHECKING([whether to enable the threaded resolver])
  OPT_THRES="default"
  AC_ARG_ENABLE(threaded_resolver,
AC_HELP_STRING([--enable-threaded-resolver],[Enable threaded resolver])
AC_HELP_STRING([--disable-threaded-resolver],[Disable threaded resolver]),
  OPT_THRES=$enableval)
  case "$OPT_THRES" in
    no)
      dnl --disable-threaded-resolver option used
      want_thres="no"
      ;;
    *)







|
|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
dnl --enable-threaded-resolver or --disable-threaded-resolver, and
dnl set shell variable want_thres as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_THREADED_RESOLVER], [
  AC_MSG_CHECKING([whether to enable the threaded resolver])
  OPT_THRES="default"
  AC_ARG_ENABLE(threaded_resolver,
AS_HELP_STRING([--enable-threaded-resolver],[Enable threaded resolver])
AS_HELP_STRING([--disable-threaded-resolver],[Disable threaded resolver]),
  OPT_THRES=$enableval)
  case "$OPT_THRES" in
    no)
      dnl --disable-threaded-resolver option used
      want_thres="no"
      ;;
    *)
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

AC_DEFUN([CURL_CHECK_OPTION_ARES], [
dnl   AC_BEFORE([$0],[CURL_CHECK_OPTION_THREADS])dnl
  AC_BEFORE([$0],[CURL_CHECK_LIB_ARES])dnl
  AC_MSG_CHECKING([whether to enable c-ares for DNS lookups])
  OPT_ARES="default"
  AC_ARG_ENABLE(ares,
AC_HELP_STRING([--enable-ares@<:@=PATH@:>@],[Enable c-ares for DNS lookups])
AC_HELP_STRING([--disable-ares],[Disable c-ares for DNS lookups]),
  OPT_ARES=$enableval)
  case "$OPT_ARES" in
    no)
      dnl --disable-ares option used
      want_ares="no"
      ;;
    default)







|
|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

AC_DEFUN([CURL_CHECK_OPTION_ARES], [
dnl   AC_BEFORE([$0],[CURL_CHECK_OPTION_THREADS])dnl
  AC_BEFORE([$0],[CURL_CHECK_LIB_ARES])dnl
  AC_MSG_CHECKING([whether to enable c-ares for DNS lookups])
  OPT_ARES="default"
  AC_ARG_ENABLE(ares,
AS_HELP_STRING([--enable-ares@<:@=PATH@:>@],[Enable c-ares for DNS lookups])
AS_HELP_STRING([--disable-ares],[Disable c-ares for DNS lookups]),
  OPT_ARES=$enableval)
  case "$OPT_ARES" in
    no)
      dnl --disable-ares option used
      want_ares="no"
      ;;
    default)
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
dnl shell variable want_curldebug value as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_CURLDEBUG], [
  AC_BEFORE([$0],[CURL_CHECK_CURLDEBUG])dnl
  AC_MSG_CHECKING([whether to enable curl debug memory tracking])
  OPT_CURLDEBUG_BUILD="default"
  AC_ARG_ENABLE(curldebug,
AC_HELP_STRING([--enable-curldebug],[Enable curl debug memory tracking])
AC_HELP_STRING([--disable-curldebug],[Disable curl debug memory tracking]),
  OPT_CURLDEBUG_BUILD=$enableval)
  case "$OPT_CURLDEBUG_BUILD" in
    no)
      dnl --disable-curldebug option used
      want_curldebug="no"
      AC_MSG_RESULT([no])
      ;;







|
|







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
dnl shell variable want_curldebug value as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_CURLDEBUG], [
  AC_BEFORE([$0],[CURL_CHECK_CURLDEBUG])dnl
  AC_MSG_CHECKING([whether to enable curl debug memory tracking])
  OPT_CURLDEBUG_BUILD="default"
  AC_ARG_ENABLE(curldebug,
AS_HELP_STRING([--enable-curldebug],[Enable curl debug memory tracking])
AS_HELP_STRING([--disable-curldebug],[Disable curl debug memory tracking]),
  OPT_CURLDEBUG_BUILD=$enableval)
  case "$OPT_CURLDEBUG_BUILD" in
    no)
      dnl --disable-curldebug option used
      want_curldebug="no"
      AC_MSG_RESULT([no])
      ;;
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
AC_DEFUN([CURL_CHECK_OPTION_DEBUG], [
  AC_BEFORE([$0],[CURL_CHECK_OPTION_WARNINGS])dnl
  AC_BEFORE([$0],[CURL_CHECK_OPTION_CURLDEBUG])dnl
  AC_BEFORE([$0],[XC_CHECK_PROG_CC])dnl
  AC_MSG_CHECKING([whether to enable debug build options])
  OPT_DEBUG_BUILD="default"
  AC_ARG_ENABLE(debug,
AC_HELP_STRING([--enable-debug],[Enable debug build options])
AC_HELP_STRING([--disable-debug],[Disable debug build options]),
  OPT_DEBUG_BUILD=$enableval)
  case "$OPT_DEBUG_BUILD" in
    no)
      dnl --disable-debug option used
      want_debug="no"
      ;;
    default)







|
|







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
AC_DEFUN([CURL_CHECK_OPTION_DEBUG], [
  AC_BEFORE([$0],[CURL_CHECK_OPTION_WARNINGS])dnl
  AC_BEFORE([$0],[CURL_CHECK_OPTION_CURLDEBUG])dnl
  AC_BEFORE([$0],[XC_CHECK_PROG_CC])dnl
  AC_MSG_CHECKING([whether to enable debug build options])
  OPT_DEBUG_BUILD="default"
  AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug],[Enable debug build options])
AS_HELP_STRING([--disable-debug],[Disable debug build options]),
  OPT_DEBUG_BUILD=$enableval)
  case "$OPT_DEBUG_BUILD" in
    no)
      dnl --disable-debug option used
      want_debug="no"
      ;;
    default)
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

AC_DEFUN([CURL_CHECK_OPTION_OPTIMIZE], [
  AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl
  AC_BEFORE([$0],[XC_CHECK_PROG_CC])dnl
  AC_MSG_CHECKING([whether to enable compiler optimizer])
  OPT_COMPILER_OPTIMIZE="default"
  AC_ARG_ENABLE(optimize,
AC_HELP_STRING([--enable-optimize],[Enable compiler optimizations])
AC_HELP_STRING([--disable-optimize],[Disable compiler optimizations]),
  OPT_COMPILER_OPTIMIZE=$enableval)
  case "$OPT_COMPILER_OPTIMIZE" in
    no)
      dnl --disable-optimize option used. We will handle this as
      dnl a request to disable compiler optimizations if possible.
      dnl If the compiler is known CFLAGS and CPPFLAGS will be
      dnl overridden, otherwise this can not be honored.







|
|







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

AC_DEFUN([CURL_CHECK_OPTION_OPTIMIZE], [
  AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl
  AC_BEFORE([$0],[XC_CHECK_PROG_CC])dnl
  AC_MSG_CHECKING([whether to enable compiler optimizer])
  OPT_COMPILER_OPTIMIZE="default"
  AC_ARG_ENABLE(optimize,
AS_HELP_STRING([--enable-optimize],[Enable compiler optimizations])
AS_HELP_STRING([--disable-optimize],[Disable compiler optimizations]),
  OPT_COMPILER_OPTIMIZE=$enableval)
  case "$OPT_COMPILER_OPTIMIZE" in
    no)
      dnl --disable-optimize option used. We will handle this as
      dnl a request to disable compiler optimizations if possible.
      dnl If the compiler is known CFLAGS and CPPFLAGS will be
      dnl overridden, otherwise this can not be honored.
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
dnl setting shell variable want_symbol_hiding value.

AC_DEFUN([CURL_CHECK_OPTION_SYMBOL_HIDING], [
  AC_BEFORE([$0],[CURL_CHECK_COMPILER_SYMBOL_HIDING])dnl
  AC_MSG_CHECKING([whether to enable hiding of library internal symbols])
  OPT_SYMBOL_HIDING="default"
  AC_ARG_ENABLE(symbol-hiding,
AC_HELP_STRING([--enable-symbol-hiding],[Enable hiding of library internal symbols])
AC_HELP_STRING([--disable-symbol-hiding],[Disable hiding of library internal symbols]),
  OPT_SYMBOL_HIDING=$enableval)
  AC_ARG_ENABLE(hidden-symbols,
AC_HELP_STRING([--enable-hidden-symbols],[To be deprecated, use --enable-symbol-hiding])
AC_HELP_STRING([--disable-hidden-symbols],[To be deprecated, use --disable-symbol-hiding]),
  OPT_SYMBOL_HIDING=$enableval)
  case "$OPT_SYMBOL_HIDING" in
    no)
      dnl --disable-symbol-hiding option used.
      dnl This is an indication to not attempt hiding of library internal
      dnl symbols. Default symbol visibility will be used, which normally
      dnl exposes all library internal symbols.







|
|


|
|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
dnl setting shell variable want_symbol_hiding value.

AC_DEFUN([CURL_CHECK_OPTION_SYMBOL_HIDING], [
  AC_BEFORE([$0],[CURL_CHECK_COMPILER_SYMBOL_HIDING])dnl
  AC_MSG_CHECKING([whether to enable hiding of library internal symbols])
  OPT_SYMBOL_HIDING="default"
  AC_ARG_ENABLE(symbol-hiding,
AS_HELP_STRING([--enable-symbol-hiding],[Enable hiding of library internal symbols])
AS_HELP_STRING([--disable-symbol-hiding],[Disable hiding of library internal symbols]),
  OPT_SYMBOL_HIDING=$enableval)
  AC_ARG_ENABLE(hidden-symbols,
AS_HELP_STRING([--enable-hidden-symbols],[To be deprecated, use --enable-symbol-hiding])
AS_HELP_STRING([--disable-hidden-symbols],[To be deprecated, use --disable-symbol-hiding]),
  OPT_SYMBOL_HIDING=$enableval)
  case "$OPT_SYMBOL_HIDING" in
    no)
      dnl --disable-symbol-hiding option used.
      dnl This is an indication to not attempt hiding of library internal
      dnl symbols. Default symbol visibility will be used, which normally
      dnl exposes all library internal symbols.
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
dnl set shell variable want_threads as appropriate.

dnl AC_DEFUN([CURL_CHECK_OPTION_THREADS], [
dnl   AC_BEFORE([$0],[CURL_CHECK_LIB_THREADS])dnl
dnl   AC_MSG_CHECKING([whether to enable threads for DNS lookups])
dnl   OPT_THREADS="default"
dnl   AC_ARG_ENABLE(threads,
dnl AC_HELP_STRING([--enable-threads@<:@=PATH@:>@],[Enable threads for DNS lookups])
dnl AC_HELP_STRING([--disable-threads],[Disable threads for DNS lookups]),
dnl   OPT_THREADS=$enableval)
dnl   case "$OPT_THREADS" in
dnl     no)
dnl       dnl --disable-threads option used
dnl       want_threads="no"
dnl       AC_MSG_RESULT([no])
dnl       ;;







|
|







279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
dnl set shell variable want_threads as appropriate.

dnl AC_DEFUN([CURL_CHECK_OPTION_THREADS], [
dnl   AC_BEFORE([$0],[CURL_CHECK_LIB_THREADS])dnl
dnl   AC_MSG_CHECKING([whether to enable threads for DNS lookups])
dnl   OPT_THREADS="default"
dnl   AC_ARG_ENABLE(threads,
dnl AS_HELP_STRING([--enable-threads@<:@=PATH@:>@],[Enable threads for DNS lookups])
dnl AS_HELP_STRING([--disable-threads],[Disable threads for DNS lookups]),
dnl   OPT_THREADS=$enableval)
dnl   case "$OPT_THREADS" in
dnl     no)
dnl       dnl --disable-threads option used
dnl       want_threads="no"
dnl       AC_MSG_RESULT([no])
dnl       ;;
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
dnl as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_RT], [
  AC_BEFORE([$0], [CURL_CHECK_LIB_THREADS])dnl
  AC_MSG_CHECKING([whether to disable dependency on -lrt])
  OPT_RT="default"
  AC_ARG_ENABLE(rt,
 AC_HELP_STRING([--disable-rt],[disable dependency on -lrt]),
  OPT_RT=$enableval)
  case "$OPT_RT" in
    no)
      dnl --disable-rt used (reverse logic)
      dontwant_rt="yes"
      AC_MSG_RESULT([yes])
      ;;







|







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
dnl as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_RT], [
  AC_BEFORE([$0], [CURL_CHECK_LIB_THREADS])dnl
  AC_MSG_CHECKING([whether to disable dependency on -lrt])
  OPT_RT="default"
  AC_ARG_ENABLE(rt,
 AS_HELP_STRING([--disable-rt],[disable dependency on -lrt]),
  OPT_RT=$enableval)
  case "$OPT_RT" in
    no)
      dnl --disable-rt used (reverse logic)
      dontwant_rt="yes"
      AC_MSG_RESULT([yes])
      ;;
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
AC_DEFUN([CURL_CHECK_OPTION_WARNINGS], [
  AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl
  AC_BEFORE([$0],[CURL_CHECK_OPTION_WERROR])dnl
  AC_BEFORE([$0],[XC_CHECK_PROG_CC])dnl
  AC_MSG_CHECKING([whether to enable strict compiler warnings])
  OPT_COMPILER_WARNINGS="default"
  AC_ARG_ENABLE(warnings,
AC_HELP_STRING([--enable-warnings],[Enable strict compiler warnings])
AC_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]),
  OPT_COMPILER_WARNINGS=$enableval)
  case "$OPT_COMPILER_WARNINGS" in
    no)
      dnl --disable-warnings option used
      want_warnings="no"
      ;;
    default)







|
|







360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
AC_DEFUN([CURL_CHECK_OPTION_WARNINGS], [
  AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl
  AC_BEFORE([$0],[CURL_CHECK_OPTION_WERROR])dnl
  AC_BEFORE([$0],[XC_CHECK_PROG_CC])dnl
  AC_MSG_CHECKING([whether to enable strict compiler warnings])
  OPT_COMPILER_WARNINGS="default"
  AC_ARG_ENABLE(warnings,
AS_HELP_STRING([--enable-warnings],[Enable strict compiler warnings])
AS_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]),
  OPT_COMPILER_WARNINGS=$enableval)
  case "$OPT_COMPILER_WARNINGS" in
    no)
      dnl --disable-warnings option used
      want_warnings="no"
      ;;
    default)
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
dnl shell variable want_werror as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_WERROR], [
  AC_BEFORE([$0],[CURL_CHECK_COMPILER])dnl
  AC_MSG_CHECKING([whether to enable compiler warnings as errors])
  OPT_COMPILER_WERROR="default"
  AC_ARG_ENABLE(werror,
AC_HELP_STRING([--enable-werror],[Enable compiler warnings as errors])
AC_HELP_STRING([--disable-werror],[Disable compiler warnings as errors]),
  OPT_COMPILER_WERROR=$enableval)
  case "$OPT_COMPILER_WERROR" in
    no)
      dnl --disable-werror option used
      want_werror="no"
      ;;
    default)







|
|







392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
dnl shell variable want_werror as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_WERROR], [
  AC_BEFORE([$0],[CURL_CHECK_COMPILER])dnl
  AC_MSG_CHECKING([whether to enable compiler warnings as errors])
  OPT_COMPILER_WERROR="default"
  AC_ARG_ENABLE(werror,
AS_HELP_STRING([--enable-werror],[Enable compiler warnings as errors])
AS_HELP_STRING([--disable-werror],[Disable compiler warnings as errors]),
  OPT_COMPILER_WERROR=$enableval)
  case "$OPT_COMPILER_WERROR" in
    no)
      dnl --disable-werror option used
      want_werror="no"
      ;;
    default)
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
dnl shell variable want_ntlm_wb and want_ntlm_wb_file
dnl as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_NTLM_WB], [
  AC_BEFORE([$0],[CURL_CHECK_NTLM_WB])dnl
  OPT_NTLM_WB="default"
  AC_ARG_ENABLE(ntlm-wb,
AC_HELP_STRING([--enable-ntlm-wb@<:@=FILE@:>@],[Enable NTLM delegation to winbind's ntlm_auth helper, where FILE is ntlm_auth's absolute filename (default: /usr/bin/ntlm_auth)])
AC_HELP_STRING([--disable-ntlm-wb],[Disable NTLM delegation to winbind's ntlm_auth helper]),
  OPT_NTLM_WB=$enableval)
  want_ntlm_wb_file="/usr/bin/ntlm_auth"
  case "$OPT_NTLM_WB" in
    no)
      dnl --disable-ntlm-wb option used
      want_ntlm_wb="no"
      ;;







|
|







596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
dnl shell variable want_ntlm_wb and want_ntlm_wb_file
dnl as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_NTLM_WB], [
  AC_BEFORE([$0],[CURL_CHECK_NTLM_WB])dnl
  OPT_NTLM_WB="default"
  AC_ARG_ENABLE(ntlm-wb,
AS_HELP_STRING([--enable-ntlm-wb@<:@=FILE@:>@],[Enable NTLM delegation to winbind's ntlm_auth helper, where FILE is ntlm_auth's absolute filename (default: /usr/bin/ntlm_auth)])
AS_HELP_STRING([--disable-ntlm-wb],[Disable NTLM delegation to winbind's ntlm_auth helper]),
  OPT_NTLM_WB=$enableval)
  want_ntlm_wb_file="/usr/bin/ntlm_auth"
  case "$OPT_NTLM_WB" in
    no)
      dnl --disable-ntlm-wb option used
      want_ntlm_wb="no"
      ;;
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
dnl --enable-ech or --disable-ech, and set
dnl shell variable want_ech as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_ECH], [
  AC_MSG_CHECKING([whether to enable ECH support])
  OPT_ECH="default"
  AC_ARG_ENABLE(ech,
AC_HELP_STRING([--enable-ech],[Enable ECH support])
AC_HELP_STRING([--disable-ech],[Disable ECH support]),
  OPT_ECH=$enableval)
  case "$OPT_ECH" in
    no)
      dnl --disable-ech option used
      want_ech="no"
      curl_ech_msg="no      (--enable-ech)"
      AC_MSG_RESULT([no])







|
|







655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
dnl --enable-ech or --disable-ech, and set
dnl shell variable want_ech as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_ECH], [
  AC_MSG_CHECKING([whether to enable ECH support])
  OPT_ECH="default"
  AC_ARG_ENABLE(ech,
AS_HELP_STRING([--enable-ech],[Enable ECH support])
AS_HELP_STRING([--disable-ech],[Disable ECH support]),
  OPT_ECH=$enableval)
  case "$OPT_ECH" in
    no)
      dnl --disable-ech option used
      want_ech="no"
      curl_ech_msg="no      (--enable-ech)"
      AC_MSG_RESULT([no])
Changes to jni/curl/m4/curl-functions.m4.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456

dnl CURL_INCLUDES_TIME
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when time.h is to be included.

AC_DEFUN([CURL_INCLUDES_TIME], [
AC_REQUIRE([AC_HEADER_TIME])dnl
curl_includes_time="\
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#  include <sys/time.h>







<







442
443
444
445
446
447
448

449
450
451
452
453
454
455

dnl CURL_INCLUDES_TIME
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when time.h is to be included.

AC_DEFUN([CURL_INCLUDES_TIME], [

curl_includes_time="\
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#  include <sys/time.h>
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
    curl_cv_func_stricmp="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_stricmp="no"
  fi
])

dnl CURL_CHECK_FUNC_STRNCASECMP
dnl -------------------------------------------------
dnl Verify if strncasecmp is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_strncasecmp, then
dnl HAVE_STRNCASECMP will be defined.

AC_DEFUN([CURL_CHECK_FUNC_STRNCASECMP], [
  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
  #
  tst_links_strncasecmp="unknown"
  tst_proto_strncasecmp="unknown"
  tst_compi_strncasecmp="unknown"
  tst_allow_strncasecmp="unknown"
  #
  AC_MSG_CHECKING([if strncasecmp can be linked])
  AC_LINK_IFELSE([
    AC_LANG_FUNC_LINK_TRY([strncasecmp])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_strncasecmp="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_strncasecmp="no"
  ])
  #
  if test "$tst_links_strncasecmp" = "yes"; then
    AC_MSG_CHECKING([if strncasecmp is prototyped])
    AC_EGREP_CPP([strncasecmp],[
      $curl_includes_string
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_strncasecmp="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_strncasecmp="no"
    ])
  fi
  #
  if test "$tst_proto_strncasecmp" = "yes"; then
    AC_MSG_CHECKING([if strncasecmp is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_string
      ]],[[
        if(0 != strncasecmp(0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_strncasecmp="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_strncasecmp="no"
    ])
  fi
  #
  if test "$tst_compi_strncasecmp" = "yes"; then
    AC_MSG_CHECKING([if strncasecmp usage allowed])
    if test "x$curl_disallow_strncasecmp" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_strncasecmp="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_strncasecmp="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if strncasecmp might be used])
  if test "$tst_links_strncasecmp" = "yes" &&
     test "$tst_proto_strncasecmp" = "yes" &&
     test "$tst_compi_strncasecmp" = "yes" &&
     test "$tst_allow_strncasecmp" = "yes"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_STRNCASECMP, 1,
      [Define to 1 if you have the strncasecmp function.])
    curl_cv_func_strncasecmp="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strncasecmp="no"
  fi
])


dnl CURL_CHECK_FUNC_STRNCMPI
dnl -------------------------------------------------
dnl Verify if strncmpi is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_strncmpi, then







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







6682
6683
6684
6685
6686
6687
6688




















































































6689
6690
6691
6692
6693
6694
6695
    curl_cv_func_stricmp="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_stricmp="no"
  fi
])






















































































dnl CURL_CHECK_FUNC_STRNCMPI
dnl -------------------------------------------------
dnl Verify if strncmpi is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_strncmpi, then
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
  AC_REQUIRE([AC_ARG_ENABLE])
  AC_MSG_CHECKING([for code coverage support])
  coverage="no"
  curl_coverage_msg="disabled"

  dnl check if enabled by argument
  AC_ARG_ENABLE(code-coverage,
     AC_HELP_STRING([--enable-code-coverage], [Provide code coverage]),
     coverage="$enableval")

  dnl if not gcc switch off again
  AS_IF([ test "$GCC" != "yes" ], coverage="no" )
  AC_MSG_RESULT($coverage)

  if test "x$coverage" = "xyes"; then







|







7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
  AC_REQUIRE([AC_ARG_ENABLE])
  AC_MSG_CHECKING([for code coverage support])
  coverage="no"
  curl_coverage_msg="disabled"

  dnl check if enabled by argument
  AC_ARG_ENABLE(code-coverage,
     AS_HELP_STRING([--enable-code-coverage], [Provide code coverage]),
     coverage="$enableval")

  dnl if not gcc switch off again
  AS_IF([ test "$GCC" != "yes" ], coverage="no" )
  AC_MSG_RESULT($coverage)

  if test "x$coverage" = "xyes"; then
Changes to jni/curl/packages/Makefile.in.
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343

344
345
346



347
348
349
350
351
352
353
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







322
323
324
325
326
327
328

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/packages/OS400/README.OS400.
174
175
176
177
178
179
180

181
182
183
184
185
186
187
  The following options are followed by a 'char * *' and a CCSID. Unlike
curl_easy_getinfo(), the value returned in the pointer should be freed after
use:
        CURLINFO_EFFECTIVE_URL
        CURLINFO_CONTENT_TYPE
        CURLINFO_FTP_ENTRY_PATH
        CURLINFO_REDIRECT_URL

        CURLINFO_PRIMARY_IP
        CURLINFO_RTSP_SESSION_ID
        CURLINFO_LOCAL_IP
        CURLINFO_SCHEME
  Likewise, the following options are followed by a struct curl_slist * * and a
CCSID.
        CURLINFO_SSL_ENGINES







>







174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
  The following options are followed by a 'char * *' and a CCSID. Unlike
curl_easy_getinfo(), the value returned in the pointer should be freed after
use:
        CURLINFO_EFFECTIVE_URL
        CURLINFO_CONTENT_TYPE
        CURLINFO_FTP_ENTRY_PATH
        CURLINFO_REDIRECT_URL
        CURLINFO_REFERER
        CURLINFO_PRIMARY_IP
        CURLINFO_RTSP_SESSION_ID
        CURLINFO_LOCAL_IP
        CURLINFO_SCHEME
  Likewise, the following options are followed by a struct curl_slist * * and a
CCSID.
        CURLINFO_SSL_ENGINES
Changes to jni/curl/packages/OS400/ccsidcurl.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
1108
1109
1110
1111
1112
1113
1114

1115
1116
1117
1118
1119
1120
1121
  data = (struct Curl_easy *) curl;
  va_start(arg, tag);

  switch(tag) {

  case CURLOPT_ABSTRACT_UNIX_SOCKET:
  case CURLOPT_ALTSVC:

  case CURLOPT_CAINFO:
  case CURLOPT_CAPATH:
  case CURLOPT_COOKIE:
  case CURLOPT_COOKIEFILE:
  case CURLOPT_COOKIEJAR:
  case CURLOPT_COOKIELIST:
  case CURLOPT_CRLFILE:







>







1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
  data = (struct Curl_easy *) curl;
  va_start(arg, tag);

  switch(tag) {

  case CURLOPT_ABSTRACT_UNIX_SOCKET:
  case CURLOPT_ALTSVC:
  case CURLOPT_AWS_SIGV4:
  case CURLOPT_CAINFO:
  case CURLOPT_CAPATH:
  case CURLOPT_COOKIE:
  case CURLOPT_COOKIEFILE:
  case CURLOPT_COOKIEJAR:
  case CURLOPT_COOKIELIST:
  case CURLOPT_CRLFILE:
Changes to jni/curl/packages/OS400/chkstrings.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 * string.
 *
 * Once any applicable changes to curl_easy_setopt_ccsid() have been
 * made, the EXPECTED_STRING_LASTZEROTERMINATED/EXPECTED_STRING_LAST
 * values can be updated to match the latest enum values in urldata.h.
 */
#define EXPECTED_STRING_LASTZEROTERMINATED  (STRING_SSL_EC_CURVES + 1)
#define EXPECTED_STRING_LAST                (STRING_COPYPOSTFIELDS + 1)

int main(int argc, char *argv[])
{
  int rc = 0;

  if(STRING_LASTZEROTERMINATED != EXPECTED_STRING_LASTZEROTERMINATED) {
    fprintf(stderr,







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 * string.
 *
 * Once any applicable changes to curl_easy_setopt_ccsid() have been
 * made, the EXPECTED_STRING_LASTZEROTERMINATED/EXPECTED_STRING_LAST
 * values can be updated to match the latest enum values in urldata.h.
 */
#define EXPECTED_STRING_LASTZEROTERMINATED  (STRING_SSL_EC_CURVES + 1)
#define EXPECTED_STRING_LAST                (STRING_AWS_SIGV4 + 1)

int main(int argc, char *argv[])
{
  int rc = 0;

  if(STRING_LASTZEROTERMINATED != EXPECTED_STRING_LASTZEROTERMINATED) {
    fprintf(stderr,
Changes to jni/curl/packages/OS400/curl.inc.in.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      **************************************************************************
      *                                  _   _ ____  _
      *  Project                     ___| | | |  _ \| |
      *                             / __| | | | |_) | |
      *                            | (__| |_| |  _ <| |___
      *                             \___|\___/|_| \_\_____|
      *
      * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
      *
      * This software is licensed as described in the file COPYING, which
      * you should have received as part of this distribution. The terms
      * are also available at https://curl.se/docs/copyright.html.
      *
      * You may opt to use, copy, modify, merge, publish, distribute and/or sell
      * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      **************************************************************************
      *                                  _   _ ____  _
      *  Project                     ___| | | |  _ \| |
      *                             / __| | | | |_) | |
      *                            | (__| |_| |  _ <| |___
      *                             \___|\___/|_| \_\_____|
      *
      * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
      *
      * This software is licensed as described in the file COPYING, which
      * you should have received as part of this distribution. The terms
      * are also available at https://curl.se/docs/copyright.html.
      *
      * You may opt to use, copy, modify, merge, publish, distribute and/or sell
      * copies of the Software, and permit persons to whom the Software is
1452
1453
1454
1455
1456
1457
1458








1459
1460
1461
1462
1463
1464
1465
     d                 c                   40295
     d  CURLOPT_PROXY_ISSUERCERT...
     d                 c                   10296
     d  CURLOPT_PROXY_ISSUERCERT_BLOB...
     d                 c                   40297
     d  CURLOPT_SSL_EC_CURVES...
     d                 c                   10298








      *
      /if not defined(CURL_NO_OLDIES)
     d  CURLOPT_FILE   c                   10001
     d  CURLOPT_INFILE...
     d                 c                   10009
     d  CURLOPT_SSLKEYPASSWD...
     d                 c                   10026







>
>
>
>
>
>
>
>







1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
     d                 c                   40295
     d  CURLOPT_PROXY_ISSUERCERT...
     d                 c                   10296
     d  CURLOPT_PROXY_ISSUERCERT_BLOB...
     d                 c                   40297
     d  CURLOPT_SSL_EC_CURVES...
     d                 c                   10298
     d  CURLOPT_AWS_SIG4...
     d                 c                   10305
     d  CURLOPT_DOH_SSL_VERIFYPEER...
     d                 c                   00306
     d  CURLOPT_DOH_SSL_VERIFYHOST...
     d                 c                   00307
     d  CURLOPT_DOH_SSL_VERIFYSTATUS...
     d                 c                   00308
      *
      /if not defined(CURL_NO_OLDIES)
     d  CURLOPT_FILE   c                   10001
     d  CURLOPT_INFILE...
     d                 c                   10009
     d  CURLOPT_SSLKEYPASSWD...
     d                 c                   10026
1678
1679
1680
1681
1682
1683
1684


1685
1686
1687
1688
1689
1690
1691
     d                 c                   X'00600038'
     d  CURLINFO_RETRY_AFTER...                                                 CURLINFO_OFF_T  + 57
     d                 c                   X'00600039'
     d  CURLINFO_EFFECTIVE_METHOD...                                            CURLINFO_STRING + 58
     d                 c                   X'0010003A'
     d  CURLINFO_PROXY_ERROR...                                                 CURLINFO_LONG + 59
     d                 c                   X'0020003B'


      *
     d  CURLINFO_HTTP_CODE...                                                   Old ...RESPONSE_CODE
     d                 c                   X'00200002'
      *
     d curl_sslbackend...
     d                 s             10i 0 based(######ptr######)               Enum
     d  CURLSSLBACKEND_NONE...







>
>







1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
     d                 c                   X'00600038'
     d  CURLINFO_RETRY_AFTER...                                                 CURLINFO_OFF_T  + 57
     d                 c                   X'00600039'
     d  CURLINFO_EFFECTIVE_METHOD...                                            CURLINFO_STRING + 58
     d                 c                   X'0010003A'
     d  CURLINFO_PROXY_ERROR...                                                 CURLINFO_LONG + 59
     d                 c                   X'0020003B'
     d  CURLINFO_REFERER...                                                     CURLINFO_STRING + 60
     d                 c                   X'0010003C'
      *
     d  CURLINFO_HTTP_CODE...                                                   Old ...RESPONSE_CODE
     d                 c                   X'00200002'
      *
     d curl_sslbackend...
     d                 s             10i 0 based(######ptr######)               Enum
     d  CURLSSLBACKEND_NONE...
Changes to jni/curl/packages/vms/Makefile.in.
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283

284
285
286



287
288
289
290
291
292
293
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







262
263
264
265
266
267
268

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/packages/vms/generate_config_vms_h_curl.com.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$!
$! This generates a [curl_]config.h file and also a config_vms.h file,
$! which is used to supplement that file.  Note that the config_vms.h file
$! and the [.lib]config-vms.h file do two different tasks and that the
$! filenames are slightly different.
$!
$!
$! Copyright 2013 - 2020, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
$! copyright notice and this permission notice appear in all copies.
$!
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$!
$! This generates a [curl_]config.h file and also a config_vms.h file,
$! which is used to supplement that file.  Note that the config_vms.h file
$! and the [.lib]config-vms.h file do two different tasks and that the
$! filenames are slightly different.
$!
$!
$! Copyright 2013 - 2021, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
$! copyright notice and this permission notice appear in all copies.
$!
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
$	write cvh "#endif"
$   endif
$endif
$write cvh "#ifdef CURL_DISABLE_LIBCURL_OPTION"
$write cvh "#undef CURL_DISABLE_LIBCURL_OPTION"
$write cvh "#endif"
$write cvh "#ifndef __VAX"
$write cvh "#ifdef CURL_DISABLE_NTLM"
$write cvh "#undef CURL_DISABLE_NTLM"
$write cvh "#endif"
$write cvh "#else"
$! NTLM needs long long or int64 support, missing from DECC C.
$write cvh "#ifdef __DECC
$write cvh "#ifndef CURL_DISABLE_NTLM"
$write cvh "#define CURL_DISABLE_NTLM 1"
$write cvh "#endif"
$write cvh "#endif"
$write cvh "#endif"
$write cvh "#ifdef CURL_DISABLE_POP3"
$write cvh "#undef CURL_DISABLE_POP3"
$write cvh "#endif"
$write cvh "#ifdef CURL_DISABLE_PROXY"
$write cvh "#undef CURL_DISABLE_PROXY"







<
<
<



<
<
<







274
275
276
277
278
279
280



281
282
283



284
285
286
287
288
289
290
$	write cvh "#endif"
$   endif
$endif
$write cvh "#ifdef CURL_DISABLE_LIBCURL_OPTION"
$write cvh "#undef CURL_DISABLE_LIBCURL_OPTION"
$write cvh "#endif"
$write cvh "#ifndef __VAX"



$write cvh "#else"
$! NTLM needs long long or int64 support, missing from DECC C.
$write cvh "#ifdef __DECC



$write cvh "#endif"
$write cvh "#endif"
$write cvh "#ifdef CURL_DISABLE_POP3"
$write cvh "#undef CURL_DISABLE_POP3"
$write cvh "#endif"
$write cvh "#ifdef CURL_DISABLE_PROXY"
$write cvh "#undef CURL_DISABLE_PROXY"
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
$write cvh "#endif"
$write cvh "#ifdef USE_WOLFSSL"
$write cvh "#undef USE_WOLFSSL"
$write cvh "#endif"
$write cvh "#ifdef USE_GNUTLS"
$write cvh "#undef USE_GNUTLS"
$write cvh "#endif"
$write cvh "#ifdef USE_GNUTLS_NETTLE"
$write cvh "#undef USE_GNUTLS_NETTLE"
$write cvh "#endif"
$write cvh "#ifdef USE_LIBRTMP"
$write cvh "#undef USE_LIBRTMP"
$write cvh "#endif"
$write cvh "#ifdef USE_MANUAL"
$write cvh "#undef USE_MANUAL"
$write cvh "#endif"
$write cvh "#ifdef USE_NGHTTP2"







<
<
<







321
322
323
324
325
326
327



328
329
330
331
332
333
334
$write cvh "#endif"
$write cvh "#ifdef USE_WOLFSSL"
$write cvh "#undef USE_WOLFSSL"
$write cvh "#endif"
$write cvh "#ifdef USE_GNUTLS"
$write cvh "#undef USE_GNUTLS"
$write cvh "#endif"



$write cvh "#ifdef USE_LIBRTMP"
$write cvh "#undef USE_LIBRTMP"
$write cvh "#endif"
$write cvh "#ifdef USE_MANUAL"
$write cvh "#undef USE_MANUAL"
$write cvh "#endif"
$write cvh "#ifdef USE_NGHTTP2"
Changes to jni/curl/projects/Windows/VC10/lib/libcurl.vcxproj.
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">







|












|




















|












|




















|











|



















|











|







1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|












|




















|












|




















|











|



















|











|









|







1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|




















|







2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2442
2443
2444
2445
2446
2447
2448

2449
2450
2451
2452
2453
2454
2455
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />

    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />







>







2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
2465
2466
2467
2468
2469
2470
2471

2472
2473
2474
2475
2476
2477
2478
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />

    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>







>







2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>
2607
2608
2609
2610
2611
2612
2613

2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />

    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>







>












2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
Changes to jni/curl/projects/Windows/VC10/src/curl.vcxproj.
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">







|







1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">







|







2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">







|







2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">







|







2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">







|







2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">







|







2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">







|







2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">







|







2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
Changes to jni/curl/projects/Windows/VC11/lib/libcurl.vcxproj.
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">







|












|




















|












|




















|











|



















|











|







1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|












|




















|












|




















|











|



















|











|









|







1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|




















|







2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2498
2499
2500
2501
2502
2503
2504

2505
2506
2507
2508
2509
2510
2511
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />

    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />







>







2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
2521
2522
2523
2524
2525
2526
2527

2528
2529
2530
2531
2532
2533
2534
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />

    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>







>







2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>
2663
2664
2665
2666
2667
2668
2669

2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />

    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>







>












2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
Changes to jni/curl/projects/Windows/VC11/src/curl.vcxproj.
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">







|







2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">







|







2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">







|







2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">







|







2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">







|







2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">







|







2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">







|







2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">







|







2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
Changes to jni/curl/projects/Windows/VC12/lib/libcurl.vcxproj.
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">







|












|




















|












|




















|











|



















|











|







1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|












|




















|












|




















|











|



















|











|









|







1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|




















|







2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2498
2499
2500
2501
2502
2503
2504

2505
2506
2507
2508
2509
2510
2511
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />

    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />







>







2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
2521
2522
2523
2524
2525
2526
2527

2528
2529
2530
2531
2532
2533
2534
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />

    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>







>







2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>
2663
2664
2665
2666
2667
2668
2669

2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />

    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>







>












2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
Changes to jni/curl/projects/Windows/VC12/src/curl.vcxproj.
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">







|







2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">







|







2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">







|







2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">







|







2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">







|







2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">







|







2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">







|







2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">







|







2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
Changes to jni/curl/projects/Windows/VC14/lib/libcurl.vcxproj.
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">







|












|




















|












|




















|











|



















|











|







1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|












|




















|












|




















|











|



















|











|









|







1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|







2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>







|



















|







2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|




















|







2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2498
2499
2500
2501
2502
2503
2504

2505
2506
2507
2508
2509
2510
2511
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />

    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />







>







2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
2521
2522
2523
2524
2525
2526
2527

2528
2529
2530
2531
2532
2533
2534
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />

    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>







>







2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>
2663
2664
2665
2666
2667
2668
2669

2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />

    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>







>












2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
Changes to jni/curl/projects/Windows/VC14/src/curl.vcxproj.
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">







|







2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">







|







2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">







|







2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">







|







2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">







|







2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">







|







2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">







|







2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">







|







2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
Changes to jni/curl/projects/Windows/VC15/lib/libcurl.vcxproj.
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">







|











|




















|











|




















|











|



















|











|







1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|











|




















|











|




















|











|



















|











|









|







1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>Win32</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>true</MkTypLibCompatible>
      <TargetEnvironment>X64</TargetEnvironment>
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|


















|







1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|


















|







2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|



















|







2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
    </ResourceCompile>
    <Lib>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <TargetMachine>MachineX64</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>







|







2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
2470
2471
2472
2473
2474
2475
2476

2477
2478
2479
2480
2481
2482
2483
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />

    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />







>







2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
    <ClCompile Include="..\..\..\..\lib\warnless.c" />
    <ClCompile Include="..\..\..\..\lib\wildcard.c" />
    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
2493
2494
2495
2496
2497
2498
2499

2500
2501
2502
2503
2504
2505
2506
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />

    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>







>







2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
  </ItemGroup>
  <ItemGroup>
2635
2636
2637
2638
2639
2640
2641

2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />

    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>







>












2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
Changes to jni/curl/projects/Windows/VC15/src/curl.vcxproj.
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">







|







2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">







|







2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">







|







2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">







|







2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">







|







2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">







|







2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>







|







2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>







|







2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">







|







2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">







|







2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0409</Culture>
      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
Changes to jni/curl/projects/Windows/VC6/lib/libcurl.dsp.
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"







|
|










|
|
















|
|










|
|







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no /release

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"







|
|










|
|
















|
|










|
|







238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no /release

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release

!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib







|
|







681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
1217
1218
1219
1220
1221
1222
1223




1224
1225
1226
1227
1228
1229
1230
SOURCE=..\..\..\..\lib\vauth\digest.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\digest_sspi.c
# End Source File
# Begin Source File





SOURCE=..\..\..\..\lib\vauth\krb5_gssapi.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\krb5_sspi.c
# End Source File







>
>
>
>







1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
SOURCE=..\..\..\..\lib\vauth\digest.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\digest_sspi.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\gsasl.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\krb5_gssapi.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\krb5_sspi.c
# End Source File
1309
1310
1311
1312
1313
1314
1315




1316
1317
1318
1319
1320
1321
1322
SOURCE=..\..\..\..\lib\vtls\nss.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\openssl.c
# End Source File
# Begin Source File





SOURCE=..\..\..\..\lib\vtls\schannel.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\schannel_verify.c
# End Source File







>
>
>
>







1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
SOURCE=..\..\..\..\lib\vtls\nss.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\openssl.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\rustls.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\schannel.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\schannel_verify.c
# End Source File
1873
1874
1875
1876
1877
1878
1879




1880
1881
1882
1883
1884
1885
1886
SOURCE=..\..\..\..\lib\vtls\nssg.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\openssl.h
# End Source File
# Begin Source File





SOURCE=..\..\..\..\lib\vtls\schannel.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\sectransp.h
# End Source File







>
>
>
>







1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
SOURCE=..\..\..\..\lib\vtls\nssg.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\openssl.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\rustls.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\schannel.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\sectransp.h
# End Source File
Changes to jni/curl/projects/Windows/VC6/src/curl.dsp.
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"







|
|







340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"







|
|







365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"







|
|







440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"







|
|







465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"







|
|







514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"







|
|







539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no
# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"







|
|







614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /fixed:no

!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no

!ENDIF 

# Begin Target

# Name "curl - Win32 DLL Debug"
# Name "curl - Win32 DLL Debug DLL OpenSSL"







|
|







639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no

!ENDIF 

# Begin Target

# Name "curl - Win32 DLL Debug"
# Name "curl - Win32 DLL Debug DLL OpenSSL"
Changes to jni/curl/projects/Windows/VC7.1/lib/libcurl.vcproj.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool







|












|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>







|












|







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool







|












|







647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Release\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>







|












|







940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Debug\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
1995
1996
1997
1998
1999
2000
2001



2002
2003
2004
2005
2006
2007
2008
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">
				</File>



				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">
				</File>
				<File







>
>
>







1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\gsasl.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">
				</File>
				<File
2121
2122
2123
2124
2125
2126
2127



2128
2129
2130
2131
2132
2133
2134
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c">
				</File>



				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
				</File>
				<File







>
>
>







2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
				</File>
				<File
2167
2168
2169
2170
2171
2172
2173



2174
2175
2176
2177
2178
2179
2180
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h">
				</File>



				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h">
				</File>
				<File







>
>
>







2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h">
				</File>
				<File
Changes to jni/curl/projects/Windows/VC7.1/src/curl.vcproj.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
Changes to jni/curl/projects/Windows/VC7/lib/libcurl.vcproj.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool







|












|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>







|












|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool







|












|







575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"
				SetChecksum="TRUE"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
			<Tool
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Release\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>







|







750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="TRUE"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="TRUE"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>







|












|







832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
			ConfigurationType="2"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"/>
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>







|







885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
			ConfigurationType="4"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="FALSE">
			<Tool
				Name="VCCLCompilerTool"
				AdditionalOptions="/EHsc "
				Optimization="0"
				AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Debug\include,..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				SuppressStartupBanner="TRUE"
				DebugInformationFormat="3"
				CompileAs="0"/>
1849
1850
1851
1852
1853
1854
1855



1856
1857
1858
1859
1860
1861
1862
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">
				</File>



				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">
				</File>
				<File







>
>
>







1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\gsasl.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">
				</File>
				<File
1975
1976
1977
1978
1979
1980
1981



1982
1983
1984
1985
1986
1987
1988
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c">
				</File>



				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
				</File>
				<File







>
>
>







1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
				</File>
				<File
2021
2022
2023
2024
2025
2026
2027



2028
2029
2030
2031
2032
2033
2034
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h">
				</File>



				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h">
				</File>
				<File







>
>
>







2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h">
				</File>
				<File
Changes to jni/curl/projects/Windows/VC7/src/curl.vcproj.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"







|







528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
				SuppressStartupBanner="TRUE"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Release"
				SubSystem="1"/>
			<Tool
				Name="VCMIDLTool"
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>







|







577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
				DebugInformationFormat="3"
				CompileAs="0"/>
			<Tool
				Name="VCCustomBuildTool"/>
			<Tool
				Name="VCLinkerTool"
				AdditionalOptions="/MACHINE:I386 /FIXED:NO"
				AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				SuppressStartupBanner="TRUE"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"
				GenerateDebugInformation="TRUE"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"/>
Changes to jni/curl/projects/Windows/VC8/lib/libcurl.vcproj.
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"







|




















|







657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"







|




















|







745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>







|



















|







833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool







|



















|







919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"







|




















|







1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"







|




















|







1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>







|



















|







1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool







|



















|







1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
4598
4599
4600
4601
4602
4603
4604




4605
4606
4607
4608
4609
4610
4611
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"
				>




				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"







>
>
>
>







4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\gsasl.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"
4754
4755
4756
4757
4758
4759
4760




4761
4762
4763
4764
4765
4766
4767
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c"
				>




				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"







>
>
>
>







4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"
4814
4815
4816
4817
4818
4819
4820




4821
4822
4823
4824
4825
4826
4827
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h"
				>




				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h"







>
>
>
>







4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h"
Changes to jni/curl/projects/Windows/VC8/src/curl.vcproj.
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
Changes to jni/curl/projects/Windows/VC9/lib/libcurl.vcproj.
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"







|




















|







646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"







|




















|







731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>







|



















|







816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool







|



















|







899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"







|




















|







1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
				TargetEnvironment="1"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"







|




















|







1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
				TargetEnvironment="3"
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>







|



















|







1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
				ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="1"
			/>
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool







|



















|







1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
				TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).dll"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
				ImportLibrary="$(TargetDir)$(TargetName).lib"
				TargetMachine="17"
			/>
			<Tool
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Debug\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>







|







2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
			<Tool
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				WarningLevel="4"
				DebugInformationFormat="3"
			/>
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Release\include;..\..\..\..\..\openssl\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool







|







2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
				Name="VCMIDLTool"
				TargetEnvironment="3"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
				PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
				StringPooling="true"
				RuntimeLibrary="2"
				EnableFunctionLevelLinking="true"
				WarningLevel="4"
			/>
			<Tool
4539
4540
4541
4542
4543
4544
4545




4546
4547
4548
4549
4550
4551
4552
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"
				>




				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"







>
>
>
>







4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
				<File
					RelativePath="..\..\..\..\lib\vauth\digest.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\gsasl.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"
4695
4696
4697
4698
4699
4700
4701




4702
4703
4704
4705
4706
4707
4708
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c"
				>




				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"







>
>
>
>







4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
				<File
					RelativePath="..\..\..\..\lib\vtls\nss.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"
4755
4756
4757
4758
4759
4760
4761




4762
4763
4764
4765
4766
4767
4768
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h"
				>




				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h"







>
>
>
>







4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
				<File
					RelativePath="..\..\..\..\lib\vtls\nssg.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\openssl.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\rustls.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\schannel.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\sectransp.h"
Changes to jni/curl/projects/Windows/VC9/src/curl.vcproj.
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"







|







2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="1"
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"







|







2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
				OutputFile="$(OutDir)\$(ProjectName)d.exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
				GenerateDebugInformation="true"
				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
				SubSystem="1"
				TargetMachine="17"
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool







|







2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool







|







2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
				AdditionalIncludeDirectories="..\..\..\..\include"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libcrypto.lib libssl.lib"
				OutputFile="$(OutDir)\$(ProjectName).exe"
				LinkIncremental="1"
				AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
				SubSystem="1"
				TargetMachine="17"
			/>
			<Tool
Changes to jni/curl/projects/build-openssl.bat.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32





33
34
35
36
37
38
39
@echo off
rem ***************************************************************************
rem *                                  _   _ ____  _
rem *  Project                     ___| | | |  _ \| |
rem *                             / __| | | | |_) | |
rem *                            | (__| |_| |  _ <| |___
rem *                             \___|\___/|_| \_\_____|
rem *
rem * Copyright (C) 2012 - 2020, Steve Holme, <steve_holme@hotmail.com>.
rem *
rem * This software is licensed as described in the file COPYING, which
rem * you should have received as part of this distribution. The terms
rem * are also available at https://curl.se/docs/copyright.html.
rem *
rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
rem * copies of the Software, and permit persons to whom the Software is
rem * furnished to do so, under the terms of the COPYING file.
rem *
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
rem * KIND, either express or implied.
rem *
rem ***************************************************************************

:begin
  rem Check we are running on a Windows NT derived OS
  if not "%OS%" == "Windows_NT" goto nodos

  rem Set our variables
  setlocal ENABLEDELAYEDEXPANSION
  set VC_VER=
  set BUILD_PLATFORM=
  set BUILD_CONFIG=






  rem Ensure we have the required arguments
  if /i "%~1" == "" goto syntax

  rem Calculate the program files directory
  if defined PROGRAMFILES (
    set "PF=%PROGRAMFILES%"








|




















<
|
|
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
@echo off
rem ***************************************************************************
rem *                                  _   _ ____  _
rem *  Project                     ___| | | |  _ \| |
rem *                             / __| | | | |_) | |
rem *                            | (__| |_| |  _ <| |___
rem *                             \___|\___/|_| \_\_____|
rem *
rem * Copyright (C) 2012 - 2021, Steve Holme, <steve_holme@hotmail.com>.
rem *
rem * This software is licensed as described in the file COPYING, which
rem * you should have received as part of this distribution. The terms
rem * are also available at https://curl.se/docs/copyright.html.
rem *
rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
rem * copies of the Software, and permit persons to whom the Software is
rem * furnished to do so, under the terms of the COPYING file.
rem *
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
rem * KIND, either express or implied.
rem *
rem ***************************************************************************

:begin
  rem Check we are running on a Windows NT derived OS
  if not "%OS%" == "Windows_NT" goto nodos

  rem Set our variables
  setlocal ENABLEDELAYEDEXPANSION

  set BUILD_CONFIG=
  set BUILD_PLATFORM=
  set SAVED_PATH=
  set SOURCE_PATH=
  set TMP_BUILD_PATH=
  set TMP_INSTALL_PATH=
  set VC_VER=

  rem Ensure we have the required arguments
  if /i "%~1" == "" goto syntax

  rem Calculate the program files directory
  if defined PROGRAMFILES (
    set "PF=%PROGRAMFILES%"
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
        goto error
      ) else (
        set "PERL_PATH=%~2"
        shift
      )
    ) else (
      if not defined START_DIR (
        set START_DIR=%~1%
      ) else (
        goto unknown
      )
    )

    shift & goto parseArgs
  )







|







142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
        goto error
      ) else (
        set "PERL_PATH=%~2"
        shift
      )
    ) else (
      if not defined START_DIR (
        set "START_DIR=%~1%"
      ) else (
        goto unknown
      )
    )

    shift & goto parseArgs
  )
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246



247


















248
249
250
251
252
253
254
    set LEGACY_BUILD=TRUE
  ) else (
    set LEGACY_BUILD=FALSE
  )

:start
  echo.
  set SAVED_PATH=%CD%

  if "%VC_VER%" == "6.0" (
    call "%ABS_VC_PATH%\bin\vcvars32"
  ) else if "%VC_VER%" == "7.0" (
    call "%ABS_VC_PATH%\bin\vcvars32"
  ) else if "%VC_VER%" == "7.1" (
    call "%ABS_VC_PATH%\bin\vcvars32"
  ) else if "%VC_VER%" == "14.1" (
    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
  ) else if "%VC_VER%" == "14.2" (
    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
  ) else (
    call "%ABS_VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
  )

  echo.
  cd /d %SAVED_PATH%



  if defined START_DIR cd /d %START_DIR%


















  goto %BUILD_PLATFORM%

:x64
  rem Calculate our output directory
  set OUTDIR=build\Win64\%VC_DESC%
  if not exist %OUTDIR% md %OUTDIR%








|
















|
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
    set LEGACY_BUILD=TRUE
  ) else (
    set LEGACY_BUILD=FALSE
  )

:start
  echo.
  set "SAVED_PATH=%CD%"

  if "%VC_VER%" == "6.0" (
    call "%ABS_VC_PATH%\bin\vcvars32"
  ) else if "%VC_VER%" == "7.0" (
    call "%ABS_VC_PATH%\bin\vcvars32"
  ) else if "%VC_VER%" == "7.1" (
    call "%ABS_VC_PATH%\bin\vcvars32"
  ) else if "%VC_VER%" == "14.1" (
    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
  ) else if "%VC_VER%" == "14.2" (
    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
  ) else (
    call "%ABS_VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
  )

  echo.

  cd /d "%START_DIR%" || (echo Error: Failed cd start & exit /B 1)
  rem Save the full path of the openssl source dir
  set "SOURCE_PATH=%CD%"

  rem Set temporary paths for building and installing OpenSSL. If a temporary
  rem path is not the same as the source path then it is *removed* after the
  rem installation is completed.
  rem
  rem For legacy OpenSSL the temporary build path must be the source path.
  rem
  rem For OpenSSL 1.1.x the temporary paths must be separate not a descendant
  rem of the other, otherwise pdb files will be lost between builds.
  rem https://github.com/openssl/openssl/issues/10005
  rem
  if "%LEGACY_BUILD%" == "TRUE" (
    set "TMP_BUILD_PATH=%SOURCE_PATH%"
    set "TMP_INSTALL_PATH=%SOURCE_PATH%"
  ) else (
    set "TMP_BUILD_PATH=%SOURCE_PATH%\build\tmp_build"
    set "TMP_INSTALL_PATH=%SOURCE_PATH%\build\tmp_install"
  )

  goto %BUILD_PLATFORM%

:x64
  rem Calculate our output directory
  set OUTDIR=build\Win64\%VC_DESC%
  if not exist %OUTDIR% md %OUTDIR%

352
353
354
355
356
357
358
359
360
361
362

363
364
365
366
367
368
369
  setlocal

  if "%1" == "" exit /B 1
  if "%2" == "" exit /B 1
  if "%3" == "" exit /B 1
  if "%4" == "" exit /B 1

  if "%4" == "TRUE" (
    rem Calculate the build directory
    set build_dir=%cd%


    rem Calculate the configure options
    if "%1" == "x86" (
      if "%2" == "debug" (
        set options=debug-VC-WIN32
      ) else if "%2" == "release" (
        set options=VC-WIN32
      ) else (







|
|
<

>







377
378
379
380
381
382
383
384
385

386
387
388
389
390
391
392
393
394
  setlocal

  if "%1" == "" exit /B 1
  if "%2" == "" exit /B 1
  if "%3" == "" exit /B 1
  if "%4" == "" exit /B 1

  if not exist "%TMP_BUILD_PATH%" mkdir "%TMP_BUILD_PATH%"
  cd /d "%TMP_BUILD_PATH%" || (echo Error: Failed cd build & exit /B 1)


  if "%4" == "TRUE" (
    rem Calculate the configure options
    if "%1" == "x86" (
      if "%2" == "debug" (
        set options=debug-VC-WIN32
      ) else if "%2" == "release" (
        set options=VC-WIN32
      ) else (
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
      rem Clean up the previous build
      nmake clean

      rem Remove the old makefile
      del makefile 1>nul
    )

    rem Calculate the build directory
    set build_dir=%cd%\build\tmp

    rem Calculate the configure options
    if "%1" == "x86" (
      set options=VC-WIN32
    ) else if "%1" == "x64" (
      set options=VC-WIN64A
    ) else (
      exit /B 1







<
<
<







413
414
415
416
417
418
419



420
421
422
423
424
425
426
      rem Clean up the previous build
      nmake clean

      rem Remove the old makefile
      del makefile 1>nul
    )




    rem Calculate the configure options
    if "%1" == "x86" (
      set options=VC-WIN32
    ) else if "%1" == "x64" (
      set options=VC-WIN64A
    ) else (
      exit /B 1
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444


445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
    )

    set options=!options! no-asm
  ) else (
    exit /B 1
  )

  set options=%options% --prefix=%build_dir%

  rem Run the configure
  perl Configure %options%

  exit /B %ERRORLEVEL

rem Main build function.
rem
rem %1 - Platform (x86 or x64)
rem %2 - Build Type (static or shared)
rem %3 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE)
rem
:build
  setlocal

  if "%1" == "" exit /B 1
  if "%2" == "" exit /B 1
  if "%3" == "" exit /B 1



  if "%3" == "TRUE" (
    if "%1" == "x86" (
      call ms\do_ms.bat
    ) else if "%1" == "x64" (
      call ms\do_win64a.bat
    ) else (
      exit /B 1
    )

    if "%2" == "static" (
      nmake -f ms\nt.mak
    ) else if "%2" == "shared" (
      nmake -f ms\ntdll.mak
    ) else (
      exit /B 1
    )
  ) else if "%2" == "FALSE" (
    nmake
  ) else (
    exit /B 1
  )

  exit /B 0








<
<

|

|













>
>

















|







441
442
443
444
445
446
447


448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
    )

    set options=!options! no-asm
  ) else (
    exit /B 1
  )



  rem Run the configure
  perl "%SOURCE_PATH%\Configure" %options% "--prefix=%TMP_INSTALL_PATH%"

  exit /B %ERRORLEVEL%

rem Main build function.
rem
rem %1 - Platform (x86 or x64)
rem %2 - Build Type (static or shared)
rem %3 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE)
rem
:build
  setlocal

  if "%1" == "" exit /B 1
  if "%2" == "" exit /B 1
  if "%3" == "" exit /B 1

  cd /d "%TMP_BUILD_PATH%" || (echo Error: Failed cd build & exit /B 1)

  if "%3" == "TRUE" (
    if "%1" == "x86" (
      call ms\do_ms.bat
    ) else if "%1" == "x64" (
      call ms\do_win64a.bat
    ) else (
      exit /B 1
    )

    if "%2" == "static" (
      nmake -f ms\nt.mak
    ) else if "%2" == "shared" (
      nmake -f ms\ntdll.mak
    ) else (
      exit /B 1
    )
  ) else if "%3" == "FALSE" (
    nmake
  ) else (
    exit /B 1
  )

  exit /B 0

478
479
480
481
482
483
484




485
486
487
488
489
490
491

  if "%1" == "" exit /B 1
  if "%2" == "" exit /B 1
  if "%3" == "" exit /B 1

  rem Copy the generated files to our directory structure
  if "%3" == "TRUE" (




    if "%1" == "debug" (
      if "%2" == "static" (
        rem Move the output directories
        if exist "%OUTDIR%\LIB Debug" (
          copy /y out32.dbg\* "%OUTDIR%\LIB Debug" 1>nul
          rd out32.dbg /s /q
        ) else (







>
>
>
>







500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517

  if "%1" == "" exit /B 1
  if "%2" == "" exit /B 1
  if "%3" == "" exit /B 1

  rem Copy the generated files to our directory structure
  if "%3" == "TRUE" (
    rem There's no actual installation for legacy OpenSSL, the files are copied
    rem from the build dir (for legacy this is same as source dir) to the final
    rem location.
    cd /d "%SOURCE_PATH%" || (echo Error: Failed cd source & exit /B 1)
    if "%1" == "debug" (
      if "%2" == "static" (
        rem Move the output directories
        if exist "%OUTDIR%\LIB Debug" (
          copy /y out32.dbg\* "%OUTDIR%\LIB Debug" 1>nul
          rd out32.dbg /s /q
        ) else (
542
543
544
545
546
547
548
549
550
551
552
553


554
555
556
557
558
559
560
561
562
563



564
565
566
567
568
569


570
571
572

573
574
575
576
577
578
579
580
581
582
583



584
585
586
587
588
589


590
591


592
593
594
595
596
597
598
599

600




601
602
603
604
605
606
607
        rem Remove the intermediate directories
        rd tmp32dll /s /q
      ) else (
        exit /B 1
      )
    )
  ) else if "%3" == "FALSE" (
    rem Calculate the build directory
    set build_dir=%cd%\build\tmp

    rem Perform the installation
    nmake install_sw



    rem Move the output directories
    if "%1" == "debug" (
      if "%2" == "static" (
        if not exist "%OUTDIR%\LIB Debug" (
          mkdir "%OUTDIR%\LIB Debug" 1>nul
        )

        move !build_dir!\lib\*.lib "%OUTDIR%\LIB Debug" 1>nul
        move !build_dir!\bin\*.exe "%OUTDIR%\LIB Debug" 1>nul



      ) else if "%2" == "shared" (
        if not exist "%OUTDIR%\DLL Debug" (
          mkdir "%OUTDIR%\DLL Debug" 1>nul
        )

        move !build_dir!\lib\*.lib "%OUTDIR%\DLL Debug" 1>nul


        move !build_dir!\bin\*.dll "%OUTDIR%\DLL Debug" 1>nul
        move !build_dir!\bin\*.exe "%OUTDIR%\DLL Debug" 1>nul
        move !build_dir!\bin\*.pdb "%OUTDIR%\DLL Debug" 1>nul

      ) else (
        exit /B 1
      )
    ) else if "%1" == "release" (
      if "%2" == "static" (
        if not exist "%OUTDIR%\LIB Release" (
          mkdir "%OUTDIR%\LIB Release" 1>nul
        )

        move !build_dir!\lib\*.lib "%OUTDIR%\LIB Release" 1>nul
        move !build_dir!\bin\*.exe "%OUTDIR%\LIB Release" 1>nul



      ) else if "%2" == "shared" (
        if not exist "%OUTDIR%\DLL Release" (
          mkdir "%OUTDIR%\DLL Release" 1>nul
        )

        move !build_dir!\lib\*.lib "%OUTDIR%\DLL Release" 1>nul


        move !build_dir!\bin\*.dll "%OUTDIR%\DLL Release" 1>nul
        move !build_dir!\bin\*.exe "%OUTDIR%\DLL Release" 1>nul


      ) else (
        exit /B 1
      )
    ) else (
      exit /B 1
    )

    rem Remove the output directories

    rd !build_dir! /s /q




  ) else (
    exit /B 1
  )

  exit /B 0

:syntax







|
<



>
>








|
|
>
>
>





|
>
>
|
|
|
>









|
|
>
>
>





|
>
>
|
|
>
>








>
|
>
>
>
>







568
569
570
571
572
573
574
575

576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
        rem Remove the intermediate directories
        rd tmp32dll /s /q
      ) else (
        exit /B 1
      )
    )
  ) else if "%3" == "FALSE" (
    cd /d "%TMP_BUILD_PATH%" || (echo Error: Failed cd build & exit /B 1)


    rem Perform the installation
    nmake install_sw

    cd /d "%SOURCE_PATH%" || (echo Error: Failed cd source & exit /B 1)

    rem Move the output directories
    if "%1" == "debug" (
      if "%2" == "static" (
        if not exist "%OUTDIR%\LIB Debug" (
          mkdir "%OUTDIR%\LIB Debug" 1>nul
        )

        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\LIB Debug" 1>nul
        move "%TMP_INSTALL_PATH%\lib\*.pdb" "%OUTDIR%\LIB Debug" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\LIB Debug" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\LIB Debug" 1>nul
        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\LIB Debug\include" 1>nul
      ) else if "%2" == "shared" (
        if not exist "%OUTDIR%\DLL Debug" (
          mkdir "%OUTDIR%\DLL Debug" 1>nul
        )

        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\DLL Debug" 1>nul
        move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.dll" "%OUTDIR%\DLL Debug" 1>nul
        move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.pdb" "%OUTDIR%\DLL Debug" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.dll" "%OUTDIR%\DLL Debug" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\DLL Debug" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\DLL Debug" 1>nul
        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\DLL Debug\include" 1>nul
      ) else (
        exit /B 1
      )
    ) else if "%1" == "release" (
      if "%2" == "static" (
        if not exist "%OUTDIR%\LIB Release" (
          mkdir "%OUTDIR%\LIB Release" 1>nul
        )

        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\LIB Release" 1>nul
        move "%TMP_INSTALL_PATH%\lib\*.pdb" "%OUTDIR%\LIB Release" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\LIB Release" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\LIB Release" 1>nul
        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\LIB Release\include" 1>nul
      ) else if "%2" == "shared" (
        if not exist "%OUTDIR%\DLL Release" (
          mkdir "%OUTDIR%\DLL Release" 1>nul
        )

        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\DLL Release" 1>nul
        move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.dll" "%OUTDIR%\DLL Release" 1>nul
        move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.pdb" "%OUTDIR%\DLL Release" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.dll" "%OUTDIR%\DLL Release" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\DLL Release" 1>nul
        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\DLL Release" 1>nul
        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\DLL Release\include" 1>nul
      ) else (
        exit /B 1
      )
    ) else (
      exit /B 1
    )

    rem Remove the output directories
    if not "%SOURCE_PATH%" == "%TMP_BUILD_PATH%" (
      rd "%TMP_BUILD_PATH%" /s /q
    )
    if not "%SOURCE_PATH%" == "%TMP_INSTALL_PATH%" (
      rd "%TMP_INSTALL_PATH%" /s /q
    )
  ) else (
    exit /B 1
  )

  exit /B 0

:syntax
633
634
635
636
637
638
639
640
641
642
643
644

645
646
647
648
649
650
651
652
  echo debug     - Perform a debug build
  echo release   - Perform a release build
  echo.
  echo Other:
  echo.
  echo directory - Specifies the OpenSSL source directory
  echo.
  echo -VSpath - Specify the custom VS path if Visual Studio is installed at other location
  echo           then "C:/<ProgramFiles>/Microsoft Visual Studio[version]
  echo           For e.g. -VSpath "C:\apps\MVS14"
  echo.
  echo -perlpath - Specify the custom perl root path if perl is not located at "C:\Perl" and it is a

  echo             portable copy of perl and not installed on the win system
  echo             For e.g. -perlpath "D:\strawberry-perl-5.24.3.1-64bit-portable"
  goto error

:unknown
  echo.
  echo Error: Unknown argument '%1'
  goto error







|
|


|
>
|







678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
  echo debug     - Perform a debug build
  echo release   - Perform a release build
  echo.
  echo Other:
  echo.
  echo directory - Specifies the OpenSSL source directory
  echo.
  echo -VSpath - Specify the custom VS path if Visual Studio is not located at
  echo           "C:\<ProgramFiles>\Microsoft Visual Studio <version>"
  echo           For e.g. -VSpath "C:\apps\MVS14"
  echo.
  echo -perlpath - Specify the custom perl root path if perl is not located at
  echo             "C:\Perl" and it is a portable copy of perl and not
  echo             installed on the win system.
  echo             For e.g. -perlpath "D:\strawberry-perl-5.24.3.1-64bit-portable"
  goto error

:unknown
  echo.
  echo Error: Unknown argument '%1'
  goto error
686
687
688
689
690
691
692
693
694
695
  goto error

:error
  if "%OS%" == "Windows_NT" endlocal
  exit /B 1

:success
  cd /d %SAVED_PATH%
  endlocal
  exit /B 0







|


732
733
734
735
736
737
738
739
740
741
  goto error

:error
  if "%OS%" == "Windows_NT" endlocal
  exit /B 1

:success
  cd /d "%SAVED_PATH%"
  endlocal
  exit /B 0
Changes to jni/curl/scripts/Makefile.in.
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283

284
285
286



287
288
289
290
291
292
293
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@








<














>



>
>
>







262
263
264
265
266
267
268

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@

Changes to jni/curl/src/Makefile.in.
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605

606
607
608



609
610
611
612
613
614
615
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







584
585
586
587
588
589
590

591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/src/Makefile.m32.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1999 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
66
67
68
69
70
71
72




73
74
75
76
77
78
79
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
LIBEXPAT_PATH = ../../expat-2.1.0
endif
# Edit the path below to point to the base of your libxml2 package.
ifndef LIBXML2_PATH
LIBXML2_PATH = ../../libxml2-2.9.2




endif
# Edit the path below to point to the base of your libidn2 package.
ifndef LIBIDN2_PATH
LIBIDN2_PATH = ../../libidn2-2.0.3
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1







>
>
>
>







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
LIBEXPAT_PATH = ../../expat-2.1.0
endif
# Edit the path below to point to the base of your libxml2 package.
ifndef LIBXML2_PATH
LIBXML2_PATH = ../../libxml2-2.9.2
endif
# Edit the path below to point to the base of your libgsasl package.
ifndef LIBGSASL_PATH
LIBGSASL_PATH = ../../libgsasl-1.10.0
endif
# Edit the path below to point to the base of your libidn2 package.
ifndef LIBIDN2_PATH
LIBIDN2_PATH = ../../libidn2-2.0.3
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
202
203
204
205
206
207
208



209
210
211
212
213
214
215
ZLIB = 1
endif
ifeq ($(findstring -zstd,$(CFG)),-zstd)
ZSTD = 1
endif
ifeq ($(findstring -brotli,$(CFG)),-brotli)
BROTLI = 1



endif
ifeq ($(findstring -idn2,$(CFG)),-idn2)
IDN2 = 1
endif
ifeq ($(findstring -winidn,$(CFG)),-winidn)
WINIDN = 1
endif







>
>
>







206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
ZLIB = 1
endif
ifeq ($(findstring -zstd,$(CFG)),-zstd)
ZSTD = 1
endif
ifeq ($(findstring -brotli,$(CFG)),-brotli)
BROTLI = 1
endif
ifeq ($(findstring -gsasl,$(CFG)),-gsasl)
GSASL = 1
endif
ifeq ($(findstring -idn2,$(CFG)),-idn2)
IDN2 = 1
endif
ifeq ($(findstring -winidn,$(CFG)),-winidn)
WINIDN = 1
endif
355
356
357
358
359
360
361




362
363
364
365
366
367
368
  curl_LDADD += -L"$(BROTLI_PATH)/lib"
  ifdef BROTLI_LIBS
    curl_LDADD += $(BROTLI_LIBS)
  else
    curl_LDADD += -lbrotlidec
  endif
endif




ifdef IDN2
  CFLAGS += -DUSE_LIBIDN2
  curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
else
ifdef WINIDN
  CFLAGS += -DUSE_WIN32_IDN
  curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz







>
>
>
>







362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
  curl_LDADD += -L"$(BROTLI_PATH)/lib"
  ifdef BROTLI_LIBS
    curl_LDADD += $(BROTLI_LIBS)
  else
    curl_LDADD += -lbrotlidec
  endif
endif
ifdef GSASL
  CFLAGS += -DUSE_GSASL
  curl_LDADD += -L"$(LIBGSASL_PATH)/lib" -lgsasl
endif
ifdef IDN2
  CFLAGS += -DUSE_LIBIDN2
  curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
else
ifdef WINIDN
  CFLAGS += -DUSE_WIN32_IDN
  curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
jni/curl/src/mkhelp.pl became executable.
Changes to jni/curl/src/tool_cb_prg.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
*/

#define MAX_BARLENGTH 256

#if (SIZEOF_CURL_OFF_T == 4)
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFF)
#else
   /* assume CURL_SIZEOF_CURL_OFF_T == 8 */
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF)
#endif

int tool_progress_cb(void *clientp,
                     curl_off_t dltotal, curl_off_t dlnow,
                     curl_off_t ultotal, curl_off_t ulnow)
{







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
*/

#define MAX_BARLENGTH 256

#if (SIZEOF_CURL_OFF_T == 4)
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFF)
#else
   /* assume SIZEOF_CURL_OFF_T == 8 */
#  define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF)
#endif

int tool_progress_cb(void *clientp,
                     curl_off_t dltotal, curl_off_t dlnow,
                     curl_off_t ultotal, curl_off_t ulnow)
{
Changes to jni/curl/src/tool_cb_see.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
** shall only return CURL_SEEKFUNC_* return codes.
*/

int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
{
  struct InStruct *in = userdata;

#if(CURL_SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)

  /* The offset check following here is only interesting if curl_off_t is
     larger than off_t and we are not using the WIN32 large file support
     macros that provide the support to do 64bit seeks correctly */

  if(offset > OUR_MAX_SEEK_O) {
    /* Some precaution code to work around problems with different data sizes







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
** shall only return CURL_SEEKFUNC_* return codes.
*/

int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
{
  struct InStruct *in = userdata;

#if(SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)

  /* The offset check following here is only interesting if curl_off_t is
     larger than off_t and we are not using the WIN32 large file support
     macros that provide the support to do 64bit seeks correctly */

  if(offset > OUR_MAX_SEEK_O) {
    /* Some precaution code to work around problems with different data sizes
Changes to jni/curl/src/tool_cfgable.c.
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  struct getout *urlnode;

  Curl_safefree(config->random_file);
  Curl_safefree(config->egd_file);
  Curl_safefree(config->useragent);
  Curl_safefree(config->altsvc);
  Curl_safefree(config->hsts);
  Curl_safefree(config->cookie);
  Curl_safefree(config->cookiejar);
  Curl_safefree(config->cookiefile);

  Curl_safefree(config->postfields);
  Curl_safefree(config->referer);

  Curl_safefree(config->headerfile);
  Curl_safefree(config->ftpport);
  Curl_safefree(config->iface);







|

|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  struct getout *urlnode;

  Curl_safefree(config->random_file);
  Curl_safefree(config->egd_file);
  Curl_safefree(config->useragent);
  Curl_safefree(config->altsvc);
  Curl_safefree(config->hsts);
  curl_slist_free_all(config->cookies);
  Curl_safefree(config->cookiejar);
  curl_slist_free_all(config->cookiefiles);

  Curl_safefree(config->postfields);
  Curl_safefree(config->referer);

  Curl_safefree(config->headerfile);
  Curl_safefree(config->ftpport);
  Curl_safefree(config->iface);
Changes to jni/curl/src/tool_cfgable.h.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
};

struct OperationConfig {
  bool remote_time;
  char *random_file;
  char *egd_file;
  char *useragent;
  char *cookie;             /* single line with specified cookies */
  char *cookiejar;          /* write to this file */
  char *cookiefile;         /* read from this file */
  char *altsvc;             /* alt-svc cache file name */
  char *hsts;               /* HSTS cache file name */
  bool cookiesession;       /* new session? */
  bool encoding;            /* Accept-Encoding please */
  bool tr_encoding;         /* Transfer-Encoding please */
  unsigned long authtype;   /* auth bitmask */
  bool use_resume;







|

|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
};

struct OperationConfig {
  bool remote_time;
  char *random_file;
  char *egd_file;
  char *useragent;
  struct curl_slist *cookies;  /* cookies to serialize into a single line */
  char *cookiejar;          /* write to this file */
  struct curl_slist *cookiefiles;  /* file(s) to load cookies from */
  char *altsvc;             /* alt-svc cache file name */
  char *hsts;               /* HSTS cache file name */
  bool cookiesession;       /* new session? */
  bool encoding;            /* Accept-Encoding please */
  bool tr_encoding;         /* Transfer-Encoding please */
  unsigned long authtype;   /* auth bitmask */
  bool use_resume;
114
115
116
117
118
119
120

121
122
123
124
125
126
127
  char *sasl_authzid;       /* Authorisation identity (identity to use) */
  bool sasl_ir;             /* Enable/disable SASL initial response */
  bool proxytunnel;
  bool ftp_append;          /* APPE on ftp */
  bool use_ascii;           /* select ascii or text transfer */
  bool autoreferer;         /* automatically set referer */
  bool failonerror;         /* fail on (HTTP) errors */

  bool show_headers;        /* show headers to data output */
  bool no_body;             /* don't get the body */
  bool dirlistonly;         /* only get the FTP dir list */
  bool followlocation;      /* follow http redirects */
  bool unrestricted_auth;   /* Continue to send authentication (user+password)
                               when following ocations, even when hostname
                               changed */







>







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  char *sasl_authzid;       /* Authorisation identity (identity to use) */
  bool sasl_ir;             /* Enable/disable SASL initial response */
  bool proxytunnel;
  bool ftp_append;          /* APPE on ftp */
  bool use_ascii;           /* select ascii or text transfer */
  bool autoreferer;         /* automatically set referer */
  bool failonerror;         /* fail on (HTTP) errors */
  bool failwithbody;        /* fail on (HTTP) errors but still store body */
  bool show_headers;        /* show headers to data output */
  bool no_body;             /* don't get the body */
  bool dirlistonly;         /* only get the FTP dir list */
  bool followlocation;      /* follow http redirects */
  bool unrestricted_auth;   /* Continue to send authentication (user+password)
                               when following ocations, even when hostname
                               changed */
169
170
171
172
173
174
175


176
177
178
179

180
181
182
183
184
185
186
  long httpversion;
  bool http09_allowed;
  bool nobuffer;
  bool readbusy;            /* set when reading input returns EAGAIN */
  bool globoff;
  bool use_httpget;
  bool insecure_ok;         /* set TRUE to allow insecure SSL connects */


  bool proxy_insecure_ok;   /* set TRUE to allow insecure SSL connects
                               for proxy */
  bool terminal_binary_ok;
  bool verifystatus;

  bool create_dirs;
  bool ftp_create_dirs;
  bool ftp_skip_ip;
  bool proxynegotiate;
  bool proxyntlm;
  bool proxydigest;
  bool proxybasic;







>
>




>







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
  long httpversion;
  bool http09_allowed;
  bool nobuffer;
  bool readbusy;            /* set when reading input returns EAGAIN */
  bool globoff;
  bool use_httpget;
  bool insecure_ok;         /* set TRUE to allow insecure SSL connects */
  bool doh_insecure_ok;     /* set TRUE to allow insecure SSL connects
                               for DOH */
  bool proxy_insecure_ok;   /* set TRUE to allow insecure SSL connects
                               for proxy */
  bool terminal_binary_ok;
  bool verifystatus;
  bool doh_verifystatus;
  bool create_dirs;
  bool ftp_create_dirs;
  bool ftp_skip_ip;
  bool proxynegotiate;
  bool proxyntlm;
  bool proxydigest;
  bool proxybasic;
Changes to jni/curl/src/tool_getparam.c.
247
248
249
250
251
252
253

254
255
256
257
258
259
260
  {"El", "tlspassword",              ARG_STRING},
  {"Em", "tlsauthtype",              ARG_STRING},
  {"En", "ssl-allow-beast",          ARG_BOOL},
  /* Eo */
  {"Ep", "pinnedpubkey",             ARG_STRING},
  {"EP", "proxy-pinnedpubkey",       ARG_STRING},
  {"Eq", "cert-status",              ARG_BOOL},

  {"Er", "false-start",              ARG_BOOL},
  {"Es", "ssl-no-revoke",            ARG_BOOL},
  {"ES", "ssl-revoke-best-effort",   ARG_BOOL},
  {"Et", "tcp-fastopen",             ARG_BOOL},
  {"Eu", "proxy-tlsuser",            ARG_STRING},
  {"Ev", "proxy-tlspassword",        ARG_STRING},
  {"Ew", "proxy-tlsauthtype",        ARG_STRING},







>







247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
  {"El", "tlspassword",              ARG_STRING},
  {"Em", "tlsauthtype",              ARG_STRING},
  {"En", "ssl-allow-beast",          ARG_BOOL},
  /* Eo */
  {"Ep", "pinnedpubkey",             ARG_STRING},
  {"EP", "proxy-pinnedpubkey",       ARG_STRING},
  {"Eq", "cert-status",              ARG_BOOL},
  {"EQ", "doh-cert-status",          ARG_BOOL},
  {"Er", "false-start",              ARG_BOOL},
  {"Es", "ssl-no-revoke",            ARG_BOOL},
  {"ES", "ssl-revoke-best-effort",   ARG_BOOL},
  {"Et", "tcp-fastopen",             ARG_BOOL},
  {"Eu", "proxy-tlsuser",            ARG_STRING},
  {"Ev", "proxy-tlspassword",        ARG_STRING},
  {"Ew", "proxy-tlsauthtype",        ARG_STRING},
276
277
278
279
280
281
282

283
284
285
286
287
288
289
290
291
292
293
294
295

296
297
298
299
300
301
302
  {"EC", "etag-save",                ARG_FILENAME},
  {"ED", "etag-compare",             ARG_FILENAME},
  {"EE", "curves",                   ARG_STRING},
  {"f",  "fail",                     ARG_BOOL},
  {"fa", "fail-early",               ARG_BOOL},
  {"fb", "styled-output",            ARG_BOOL},
  {"fc", "mail-rcpt-allowfails",     ARG_BOOL},

  {"F",  "form",                     ARG_STRING},
  {"Fs", "form-string",              ARG_STRING},
  {"g",  "globoff",                  ARG_BOOL},
  {"G",  "get",                      ARG_NONE},
  {"Ga", "request-target",           ARG_STRING},
  {"h",  "help",                     ARG_BOOL},
  {"H",  "header",                   ARG_STRING},
  {"Hp", "proxy-header",             ARG_STRING},
  {"i",  "include",                  ARG_BOOL},
  {"I",  "head",                     ARG_BOOL},
  {"j",  "junk-session-cookies",     ARG_BOOL},
  {"J",  "remote-header-name",       ARG_BOOL},
  {"k",  "insecure",                 ARG_BOOL},

  {"K",  "config",                   ARG_FILENAME},
  {"l",  "list-only",                ARG_BOOL},
  {"L",  "location",                 ARG_BOOL},
  {"Lt", "location-trusted",         ARG_BOOL},
  {"m",  "max-time",                 ARG_STRING},
  {"M",  "manual",                   ARG_BOOL},
  {"n",  "netrc",                    ARG_BOOL},







>













>







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
  {"EC", "etag-save",                ARG_FILENAME},
  {"ED", "etag-compare",             ARG_FILENAME},
  {"EE", "curves",                   ARG_STRING},
  {"f",  "fail",                     ARG_BOOL},
  {"fa", "fail-early",               ARG_BOOL},
  {"fb", "styled-output",            ARG_BOOL},
  {"fc", "mail-rcpt-allowfails",     ARG_BOOL},
  {"fd", "fail-with-body",           ARG_BOOL},
  {"F",  "form",                     ARG_STRING},
  {"Fs", "form-string",              ARG_STRING},
  {"g",  "globoff",                  ARG_BOOL},
  {"G",  "get",                      ARG_NONE},
  {"Ga", "request-target",           ARG_STRING},
  {"h",  "help",                     ARG_BOOL},
  {"H",  "header",                   ARG_STRING},
  {"Hp", "proxy-header",             ARG_STRING},
  {"i",  "include",                  ARG_BOOL},
  {"I",  "head",                     ARG_BOOL},
  {"j",  "junk-session-cookies",     ARG_BOOL},
  {"J",  "remote-header-name",       ARG_BOOL},
  {"k",  "insecure",                 ARG_BOOL},
  {"kd", "doh-insecure",             ARG_BOOL},
  {"K",  "config",                   ARG_FILENAME},
  {"l",  "list-only",                ARG_BOOL},
  {"L",  "location",                 ARG_BOOL},
  {"Lt", "location-trusted",         ARG_BOOL},
  {"m",  "max-time",                 ARG_STRING},
  {"M",  "manual",                   ARG_BOOL},
  {"n",  "netrc",                    ARG_BOOL},
1313
1314
1315
1316
1317
1318
1319
1320


1321
1322
1323
1324


1325
1326
1327
1328
1329
1330
1331
        break;
      default:  /* --cookie string coming up: */
        if(nextarg[0] == '@') {
          nextarg++;
        }
        else if(strchr(nextarg, '=')) {
          /* A cookie string must have a =-letter */
          GetStr(&config->cookie, nextarg);


          break;
        }
        /* We have a cookie file to read from! */
        GetStr(&config->cookiefile, nextarg);


      }
      break;
    case 'B':
      /* use ASCII/text when transferring */
      config->use_ascii = toggle;
      break;
    case 'c':







|
>
>



|
>
>







1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
        break;
      default:  /* --cookie string coming up: */
        if(nextarg[0] == '@') {
          nextarg++;
        }
        else if(strchr(nextarg, '=')) {
          /* A cookie string must have a =-letter */
          err = add2list(&config->cookies, nextarg);
          if(err)
            return err;
          break;
        }
        /* We have a cookie file to read from! */
        err = add2list(&config->cookiefiles, nextarg);
        if(err)
          return err;
      }
      break;
    case 'B':
      /* use ASCII/text when transferring */
      config->use_ascii = toggle;
      break;
    case 'c':
1540
1541
1542
1543
1544
1545
1546

1547
1548
1549
1550
1551
1552
1553
1554
        /* Automatic referer requested, this may be combined with a
           set initial one */
        config->autoreferer = TRUE;
        *ptr = 0; /* null-terminate here */
      }
      else
        config->autoreferer = FALSE;

      GetStr(&config->referer, nextarg);
    }
    break;
    case 'E':
      switch(subletter) {
      case '\0': /* certificate file */
        GetFileAndPassword(nextarg, &config->cert, &config->key_passwd);
        break;







>
|







1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
        /* Automatic referer requested, this may be combined with a
           set initial one */
        config->autoreferer = TRUE;
        *ptr = 0; /* null-terminate here */
      }
      else
        config->autoreferer = FALSE;
      ptr = *nextarg ? nextarg : NULL;
      GetStr(&config->referer, ptr);
    }
    break;
    case 'E':
      switch(subletter) {
      case '\0': /* certificate file */
        GetFileAndPassword(nextarg, &config->cert, &config->key_passwd);
        break;
1620
1621
1622
1623
1624
1625
1626




1627
1628
1629
1630
1631
1632
1633
      case 'P': /* proxy pinned public key */
        GetStr(&config->proxy_pinnedpubkey, nextarg);
        break;

      case 'q': /* --cert-status */
        config->verifystatus = TRUE;
        break;





      case 'r': /* --false-start */
        config->falsestart = TRUE;
        break;

      case 's': /* --ssl-no-revoke */
        if(curlinfo->features & CURL_VERSION_SSL)







>
>
>
>







1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
      case 'P': /* proxy pinned public key */
        GetStr(&config->proxy_pinnedpubkey, nextarg);
        break;

      case 'q': /* --cert-status */
        config->verifystatus = TRUE;
        break;

      case 'Q': /* --doh-cert-status */
        config->doh_verifystatus = TRUE;
        break;

      case 'r': /* --false-start */
        config->falsestart = TRUE;
        break;

      case 's': /* --ssl-no-revoke */
        if(curlinfo->features & CURL_VERSION_SSL)
1761
1762
1763
1764
1765
1766
1767



1768
1769
1770






1771
1772
1773
1774
1775
1776
1777
        global->fail_early = toggle;
        break;
      case 'b': /* --styled-output */
        global->styled_output = toggle;
        break;
      case 'c': /* --mail-rcpt-allowfails */
        config->mail_rcpt_allowfails = toggle;



        break;
      default: /* --fail (hard on errors)  */
        config->failonerror = toggle;






      }
      break;
    case 'F':
      /* "form data" simulation, this is a little advanced so lets do our best
         to sort this out slowly and carefully */
      if(formparse(config,
                   nextarg,







>
>
>



>
>
>
>
>
>







1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
        global->fail_early = toggle;
        break;
      case 'b': /* --styled-output */
        global->styled_output = toggle;
        break;
      case 'c': /* --mail-rcpt-allowfails */
        config->mail_rcpt_allowfails = toggle;
        break;
      case 'd': /* --fail-with-body */
        config->failwithbody = toggle;
        break;
      default: /* --fail (hard on errors)  */
        config->failonerror = toggle;
        break;
      }
      if(config->failonerror && config->failwithbody) {
        errorf(config->global, "You must select either --fail or "
               "--fail-with-body, not both.\n");
        return PARAM_BAD_USE;
      }
      break;
    case 'F':
      /* "form data" simulation, this is a little advanced so lets do our best
         to sort this out slowly and carefully */
      if(formparse(config,
                   nextarg,
1873
1874
1875
1876
1877
1878
1879



1880
1881
1882
1883
1884
1885
1886
1887
        warnf(global,
              "--include and --remote-header-name cannot be combined.\n");
        return PARAM_BAD_USE;
      }
      config->content_disposition = toggle;
      break;
    case 'k': /* allow insecure SSL connects */



      config->insecure_ok = toggle;
      break;
    case 'K': /* parse config file */
      if(parseconfig(nextarg, global))
        warnf(global, "error trying read config from the '%s' file\n",
              nextarg);
      break;
    case 'l':







>
>
>
|







1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
        warnf(global,
              "--include and --remote-header-name cannot be combined.\n");
        return PARAM_BAD_USE;
      }
      config->content_disposition = toggle;
      break;
    case 'k': /* allow insecure SSL connects */
      if(subletter == 'd') /* --doh-insecure */
        config->doh_insecure_ok = toggle;
      else
        config->insecure_ok = toggle;
      break;
    case 'K': /* parse config file */
      if(parseconfig(nextarg, global))
        warnf(global, "error trying read config from the '%s' file\n",
              nextarg);
      break;
    case 'l':
Changes to jni/curl/src/tool_help.c.
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
  {"    --capath <dir>",
   "CA directory to verify peer against",
   CURLHELP_TLS},
  {"-E, --cert <certificate[:password]>",
   "Client certificate file and password",
   CURLHELP_TLS},
  {"    --cert-status",
   "Verify the status of the server certificate",
   CURLHELP_TLS},
  {"    --cert-type <type>",
   "Certificate type (DER/PEM/ENG)",
   CURLHELP_TLS},
  {"    --ciphers <list of ciphers>",
   "SSL ciphers to use",
   CURLHELP_TLS},







|







145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
  {"    --capath <dir>",
   "CA directory to verify peer against",
   CURLHELP_TLS},
  {"-E, --cert <certificate[:password]>",
   "Client certificate file and password",
   CURLHELP_TLS},
  {"    --cert-status",
   "Verify the status of the server cert via OCSP-staple",
   CURLHELP_TLS},
  {"    --cert-type <type>",
   "Certificate type (DER/PEM/ENG)",
   CURLHELP_TLS},
  {"    --ciphers <list of ciphers>",
   "SSL ciphers to use",
   CURLHELP_TLS},
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
   CURLHELP_HTTP},
  {"-c, --cookie-jar <filename>",
   "Write cookies to <filename> after operation",
   CURLHELP_HTTP},
  {"    --create-dirs",
   "Create necessary local directory hierarchy",
   CURLHELP_CURL},
  {"    --create-file-mode",
   "File mode for created files",
   CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_FILE | CURLHELP_UPLOAD},
  {"    --crlf",
   "Convert LF to CRLF in upload",
   CURLHELP_FTP | CURLHELP_SMTP},
  {"    --crlfile <file>",
   "Get a CRL list in PEM format from the given file",
   CURLHELP_TLS},







|
|







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
   CURLHELP_HTTP},
  {"-c, --cookie-jar <filename>",
   "Write cookies to <filename> after operation",
   CURLHELP_HTTP},
  {"    --create-dirs",
   "Create necessary local directory hierarchy",
   CURLHELP_CURL},
  {"    --create-file-mode <mode>",
   "File mode (octal) for created files",
   CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_FILE | CURLHELP_UPLOAD},
  {"    --crlf",
   "Convert LF to CRLF in upload",
   CURLHELP_FTP | CURLHELP_SMTP},
  {"    --crlfile <file>",
   "Get a CRL list in PEM format from the given file",
   CURLHELP_TLS},
237
238
239
240
241
242
243






244
245
246
247
248
249
250
   CURLHELP_DNS},
  {"    --dns-ipv6-addr <address>",
   "IPv6 address to use for DNS requests",
   CURLHELP_DNS},
  {"    --dns-servers <addresses>",
   "DNS server addrs to use",
   CURLHELP_DNS},






  {"    --doh-url <URL>",
   "Resolve host names over DOH",
   CURLHELP_DNS},
  {"-D, --dump-header <filename>",
   "Write the received headers to <filename>",
   CURLHELP_HTTP | CURLHELP_FTP},
  {"    --egd-file <file>",







>
>
>
>
>
>







237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
   CURLHELP_DNS},
  {"    --dns-ipv6-addr <address>",
   "IPv6 address to use for DNS requests",
   CURLHELP_DNS},
  {"    --dns-servers <addresses>",
   "DNS server addrs to use",
   CURLHELP_DNS},
  {"    --doh-cert-status",
   "Verify the status of the DOH server cert via OCSP-staple",
   CURLHELP_DNS | CURLHELP_TLS},
  {"    --doh-insecure",
   "Allow insecure DOH server connections",
   CURLHELP_DNS | CURLHELP_TLS},
  {"    --doh-url <URL>",
   "Resolve host names over DOH",
   CURLHELP_DNS},
  {"-D, --dump-header <filename>",
   "Write the received headers to <filename>",
   CURLHELP_HTTP | CURLHELP_FTP},
  {"    --egd-file <file>",
264
265
266
267
268
269
270



271
272
273
274
275
276
277
   CURLHELP_HTTP},
  {"-f, --fail",
   "Fail silently (no output at all) on HTTP errors",
   CURLHELP_IMPORTANT | CURLHELP_HTTP},
  {"    --fail-early",
   "Fail on first transfer error, do not continue",
   CURLHELP_CURL},



  {"    --false-start",
   "Enable TLS False Start",
   CURLHELP_TLS},
  {"-F, --form <name=content>",
   "Specify multipart MIME data",
   CURLHELP_HTTP | CURLHELP_UPLOAD},
  {"    --form-string <name=string>",







>
>
>







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
   CURLHELP_HTTP},
  {"-f, --fail",
   "Fail silently (no output at all) on HTTP errors",
   CURLHELP_IMPORTANT | CURLHELP_HTTP},
  {"    --fail-early",
   "Fail on first transfer error, do not continue",
   CURLHELP_CURL},
  {"    --fail-with-body",
   "Fail on HTTP errors but save the body",
   CURLHELP_HTTP | CURLHELP_OUTPUT},
  {"    --false-start",
   "Enable TLS False Start",
   CURLHELP_TLS},
  {"-F, --form <name=content>",
   "Specify multipart MIME data",
   CURLHELP_HTTP | CURLHELP_UPLOAD},
  {"    --form-string <name=string>",
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
   CURLHELP_TLS},
  {"-2, --sslv2",
   "Use SSLv2",
   CURLHELP_TLS},
  {"-3, --sslv3",
   "Use SSLv3",
   CURLHELP_TLS},
  {"    --stderr",
   "Where to redirect stderr",
   CURLHELP_VERBOSE},
  {"    --styled-output",
   "Enable styled output for HTTP headers",
   CURLHELP_VERBOSE},
  {"    --suppress-connect-headers",
   "Suppress proxy CONNECT response headers",







|







738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
   CURLHELP_TLS},
  {"-2, --sslv2",
   "Use SSLv2",
   CURLHELP_TLS},
  {"-3, --sslv3",
   "Use SSLv3",
   CURLHELP_TLS},
  {"    --stderr <file>",
   "Where to redirect stderr",
   CURLHELP_VERBOSE},
  {"    --styled-output",
   "Enable styled output for HTTP headers",
   CURLHELP_VERBOSE},
  {"    --suppress-connect-headers",
   "Suppress proxy CONNECT response headers",
868
869
870
871
872
873
874

875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
  {"HTTP3",          CURL_VERSION_HTTP3},
  {"UnixSockets",    CURL_VERSION_UNIX_SOCKETS},
  {"HTTPS-proxy",    CURL_VERSION_HTTPS_PROXY},
  {"MultiSSL",       CURL_VERSION_MULTI_SSL},
  {"PSL",            CURL_VERSION_PSL},
  {"alt-svc",        CURL_VERSION_ALTSVC},
  {"HSTS",           CURL_VERSION_HSTS},

};

static void print_category(curlhelp_t category)
{
  unsigned int i;
  for(i = 0; helptext[i].opt; ++i)
    if(helptext[i].categories & category) {
      printf(" %-19s %s\n", helptext[i].opt, helptext[i].desc);
    }
}

/* Prints category if found. If not, it returns 1 */
static int get_category_content(const char *category)
{
  unsigned int i;







>







|







877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
  {"HTTP3",          CURL_VERSION_HTTP3},
  {"UnixSockets",    CURL_VERSION_UNIX_SOCKETS},
  {"HTTPS-proxy",    CURL_VERSION_HTTPS_PROXY},
  {"MultiSSL",       CURL_VERSION_MULTI_SSL},
  {"PSL",            CURL_VERSION_PSL},
  {"alt-svc",        CURL_VERSION_ALTSVC},
  {"HSTS",           CURL_VERSION_HSTS},
  {"gsasl",          CURL_VERSION_GSASL},
};

static void print_category(curlhelp_t category)
{
  unsigned int i;
  for(i = 0; helptext[i].opt; ++i)
    if(helptext[i].categories & category) {
      printf(" %-18s  %s\n", helptext[i].opt, helptext[i].desc);
    }
}

/* Prints category if found. If not, it returns 1 */
static int get_category_content(const char *category)
{
  unsigned int i;
Changes to jni/curl/src/tool_hugehelp.c.

more than 10,000 changes

Changes to jni/curl/src/tool_metalink.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#endif

#undef HAVE_NSS_CONTEXT

#ifdef USE_OPENSSL
#  include <openssl/md5.h>
#  include <openssl/sha.h>
#elif defined(USE_GNUTLS_NETTLE)
#  include <nettle/md5.h>
#  include <nettle/sha.h>
#  define MD5_CTX    struct md5_ctx
#  define SHA_CTX    struct sha1_ctx
#  define SHA256_CTX struct sha256_ctx
#elif defined(USE_GNUTLS)
#  include <gcrypt.h>
#  define MD5_CTX    gcry_md_hd_t
#  define SHA_CTX    gcry_md_hd_t
#  define SHA256_CTX gcry_md_hd_t
#elif defined(USE_NSS)
#  include <nss.h>
#  include <pk11pub.h>
#  define MD5_CTX    void *
#  define SHA_CTX    void *
#  define SHA256_CTX void *
#  define HAVE_NSS_CONTEXT







|





<
<
<
<
<







31
32
33
34
35
36
37
38
39
40
41
42
43





44
45
46
47
48
49
50
#endif

#undef HAVE_NSS_CONTEXT

#ifdef USE_OPENSSL
#  include <openssl/md5.h>
#  include <openssl/sha.h>
#elif defined(USE_GNUTLS)
#  include <nettle/md5.h>
#  include <nettle/sha.h>
#  define MD5_CTX    struct md5_ctx
#  define SHA_CTX    struct sha1_ctx
#  define SHA256_CTX struct sha256_ctx





#elif defined(USE_NSS)
#  include <nss.h>
#  include <pk11pub.h>
#  define MD5_CTX    void *
#  define SHA_CTX    void *
#  define SHA256_CTX void *
#  define HAVE_NSS_CONTEXT
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
    *(str) = strdup((val)); \
  if(!(val)) \
    return PARAM_NO_MEM; \
} while(0)

#if defined(USE_OPENSSL)
/* Functions are already defined */
#elif defined(USE_GNUTLS_NETTLE)

static int MD5_Init(MD5_CTX *ctx)
{
  md5_init(ctx);
  return 1;
}








|







107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
    *(str) = strdup((val)); \
  if(!(val)) \
    return PARAM_NO_MEM; \
} while(0)

#if defined(USE_OPENSSL)
/* Functions are already defined */
#elif defined(USE_GNUTLS)

static int MD5_Init(MD5_CTX *ctx)
{
  md5_init(ctx);
  return 1;
}

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
}

static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
{
  sha256_digest(ctx, 32, digest);
}

#elif defined(USE_GNUTLS)

static int MD5_Init(MD5_CTX *ctx)
{
  gcry_md_open(ctx, GCRY_MD_MD5, 0);
  return 1;
}

static void MD5_Update(MD5_CTX *ctx,
                       const unsigned char *input,
                       unsigned int inputLen)
{
  gcry_md_write(*ctx, input, inputLen);
}

static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
{
  memcpy(digest, gcry_md_read(*ctx, 0), 16);
  gcry_md_close(*ctx);
}

static int SHA1_Init(SHA_CTX *ctx)
{
  gcry_md_open(ctx, GCRY_MD_SHA1, 0);
  return 1;
}

static void SHA1_Update(SHA_CTX *ctx,
                        const unsigned char *input,
                        unsigned int inputLen)
{
  gcry_md_write(*ctx, input, inputLen);
}

static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
{
  memcpy(digest, gcry_md_read(*ctx, 0), 20);
  gcry_md_close(*ctx);
}

static int SHA256_Init(SHA256_CTX *ctx)
{
  gcry_md_open(ctx, GCRY_MD_SHA256, 0);
  return 1;
}

static void SHA256_Update(SHA256_CTX *ctx,
                          const unsigned char *input,
                          unsigned int inputLen)
{
  gcry_md_write(*ctx, input, inputLen);
}

static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
{
  memcpy(digest, gcry_md_read(*ctx, 0), 32);
  gcry_md_close(*ctx);
}

#elif defined(USE_NSS)

static int nss_hash_init(void **pctx, SECOidTag hash_alg)
{
  PK11Context *ctx;

  /* we have to initialize NSS if not initialized already */







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







163
164
165
166
167
168
169



























































170
171
172
173
174
175
176
}

static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
{
  sha256_digest(ctx, 32, digest);
}




























































#elif defined(USE_NSS)

static int nss_hash_init(void **pctx, SECOidTag hash_alg)
{
  PK11Context *ctx;

  /* we have to initialize NSS if not initialized already */
Changes to jni/curl/src/tool_operate.c.
78
79
80
81
82
83
84

85
86
87
88
89
90
91
#include "tool_util.h"
#include "tool_writeout.h"
#include "tool_xattr.h"
#include "tool_vms.h"
#include "tool_help.h"
#include "tool_hugehelp.h"
#include "tool_progress.h"


#include "memdebug.h" /* keep this as LAST include */

#ifdef CURLDEBUG
/* libcurl's debug builds provide an extra function */
CURLcode curl_easy_perform_ev(CURL *easy);
#endif







>







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "tool_util.h"
#include "tool_writeout.h"
#include "tool_xattr.h"
#include "tool_vms.h"
#include "tool_help.h"
#include "tool_hugehelp.h"
#include "tool_progress.h"
#include "dynbuf.h"

#include "memdebug.h" /* keep this as LAST include */

#ifdef CURLDEBUG
/* libcurl's debug builds provide an extra function */
CURLcode curl_easy_perform_ev(CURL *easy);
#endif
365
366
367
368
369
370
371










372

373
374
375
376
377
378
379
    if(!config->synthetic_error && result && global->showerror) {
      fprintf(global->errors, "curl: (%d) %s\n", result,
              (per->errorbuffer[0]) ? per->errorbuffer :
              curl_easy_strerror(result));
      if(result == CURLE_PEER_FAILED_VERIFICATION)
        fputs(CURL_CA_CERT_ERRORMSG, global->errors);
    }












  /* Set file extended attributes */
  if(!result && config->xattr && outs->fopened && outs->stream) {
    int rc = fwrite_xattr(curl, fileno(outs->stream));
    if(rc)
      warnf(config->global, "Error setting extended attributes on '%s': %s\n",
            outs->filename, strerror(errno));
  }







>
>
>
>
>
>
>
>
>
>
|
>







366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
    if(!config->synthetic_error && result && global->showerror) {
      fprintf(global->errors, "curl: (%d) %s\n", result,
              (per->errorbuffer[0]) ? per->errorbuffer :
              curl_easy_strerror(result));
      if(result == CURLE_PEER_FAILED_VERIFICATION)
        fputs(CURL_CA_CERT_ERRORMSG, global->errors);
    }
    else if(config->failwithbody) {
      /* if HTTP response >= 400, return error */
      long code = 0;
      curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code);
      if(code >= 400) {
        if(global->showerror)
          fprintf(global->errors,
                  "curl: (%d) The requested URL returned error: %ld\n",
                  CURLE_HTTP_RETURNED_ERROR, code);
        result = CURLE_HTTP_RETURNED_ERROR;
      }
    }
  /* Set file extended attributes */
  if(!result && config->xattr && outs->fopened && outs->stream) {
    int rc = fwrite_xattr(curl, fileno(outs->stream));
    if(rc)
      warnf(config->global, "Error setting extended attributes on '%s': %s\n",
            outs->filename, strerror(errno));
  }
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648




649
650
651
652
653
654
655

  if((global->progressmode == CURL_PROGRESS_BAR) &&
     per->progressbar.calls)
    /* if the custom progress bar has been displayed, we output a
       newline here */
    fputs("\n", per->progressbar.out);

  if(config->writeout)
    ourWriteOut(per->curl, per, config->writeout, result);

  /* Close the outs file */
  if(outs->fopened && outs->stream) {
    int rc = fclose(outs->stream);
    if(!result && rc) {
      /* something went wrong in the writing process */
      result = CURLE_WRITE_ERROR;
      if(global->showerror)
        fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
    }
  }

  /* File time can only be set _after_ the file has been closed */
  if(!result && config->remote_time && outs->s_isreg && outs->filename) {
    /* Ask libcurl if we got a remote file time */
    curl_off_t filetime = -1;
    curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
    setfiletime(filetime, outs->filename, global);
  }





  /* Close function-local opened file descriptors */
  if(per->heads.fopened && per->heads.stream)
    fclose(per->heads.stream);

  if(per->heads.alloc_filename)
    Curl_safefree(per->heads.filename);







<
<
<


















>
>
>
>







633
634
635
636
637
638
639



640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668

  if((global->progressmode == CURL_PROGRESS_BAR) &&
     per->progressbar.calls)
    /* if the custom progress bar has been displayed, we output a
       newline here */
    fputs("\n", per->progressbar.out);




  /* Close the outs file */
  if(outs->fopened && outs->stream) {
    int rc = fclose(outs->stream);
    if(!result && rc) {
      /* something went wrong in the writing process */
      result = CURLE_WRITE_ERROR;
      if(global->showerror)
        fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
    }
  }

  /* File time can only be set _after_ the file has been closed */
  if(!result && config->remote_time && outs->s_isreg && outs->filename) {
    /* Ask libcurl if we got a remote file time */
    curl_off_t filetime = -1;
    curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
    setfiletime(filetime, outs->filename, global);
  }

  /* Write the --write-out data before cleanup but after result is final */
  if(config->writeout)
    ourWriteOut(config->writeout, per, result);

  /* Close function-local opened file descriptors */
  if(per->heads.fopened && per->heads.stream)
    fclose(per->heads.stream);

  if(per->heads.alloc_filename)
    Curl_safefree(per->heads.filename);
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
    free(outs->filename);
  free(per->this_url);
  free(per->separator_err);
  free(per->separator);
  free(per->outfile);
  free(per->uploadfile);

  return CURLE_OK;
}

static void single_transfer_cleanup(struct OperationConfig *config)
{
  if(config) {
    struct State *state = &config->state;
    if(state->urls) {







|







678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
    free(outs->filename);
  free(per->this_url);
  free(per->separator_err);
  free(per->separator);
  free(per->outfile);
  free(per->uploadfile);

  return result;
}

static void single_transfer_cleanup(struct OperationConfig *config)
{
  if(config) {
    struct State *state = &config->state;
    if(state->urls) {
1443
1444
1445
1446
1447
1448
1449




1450
1451
1452
1453
1454
1455
1456

          /* new in libcurl 7.21.6 */
          if(config->tr_encoding)
            my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L);
          /* new in libcurl 7.64.0 */
          my_setopt(curl, CURLOPT_HTTP09_ALLOWED,
                    config->http09_allowed ? 1L : 0L);





        } /* (built_in_protos & CURLPROTO_HTTP) */

        my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
        my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT,
                  config->low_speed_limit);
        my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time);







>
>
>
>







1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473

          /* new in libcurl 7.21.6 */
          if(config->tr_encoding)
            my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L);
          /* new in libcurl 7.64.0 */
          my_setopt(curl, CURLOPT_HTTP09_ALLOWED,
                    config->http09_allowed ? 1L : 0L);
          if(result) {
            errorf(global, "HTTP/0.9 is not supported in this build!\n");
            return result;
          }

        } /* (built_in_protos & CURLPROTO_HTTP) */

        my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
        my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT,
                  config->low_speed_limit);
        my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time);
1669
1670
1671
1672
1673
1674
1675






1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686



1687
1688
1689
1690
1691
1692
1693
            my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
          }
          else {
            my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
            /* libcurl default is strict verifyhost -> 2L   */
            /* my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); */
          }






          if(config->proxy_insecure_ok) {
            my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 0L);
            my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYHOST, 0L);
          }
          else {
            my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 1L);
          }

          if(config->verifystatus)
            my_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1L);




          if(config->falsestart)
            my_setopt(curl, CURLOPT_SSL_FALSESTART, 1L);

          my_setopt_enum(curl, CURLOPT_SSLVERSION,
                         config->ssl_version | config->ssl_version_max);
          my_setopt_enum(curl, CURLOPT_PROXY_SSLVERSION,
                         config->proxy_ssl_version);







>
>
>
>
>
>











>
>
>







1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
            my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
          }
          else {
            my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
            /* libcurl default is strict verifyhost -> 2L   */
            /* my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); */
          }

          if(config->doh_insecure_ok) {
            my_setopt(curl, CURLOPT_DOH_SSL_VERIFYPEER, 0L);
            my_setopt(curl, CURLOPT_DOH_SSL_VERIFYHOST, 0L);
          }

          if(config->proxy_insecure_ok) {
            my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 0L);
            my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYHOST, 0L);
          }
          else {
            my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 1L);
          }

          if(config->verifystatus)
            my_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1L);

          if(config->doh_verifystatus)
            my_setopt(curl, CURLOPT_DOH_SSL_VERIFYSTATUS, 1L);

          if(config->falsestart)
            my_setopt(curl, CURLOPT_SSL_FALSESTART, 1L);

          my_setopt_enum(curl, CURLOPT_SSLVERSION,
                         config->ssl_version | config->ssl_version_max);
          my_setopt_enum(curl, CURLOPT_PROXY_SSLVERSION,
                         config->proxy_ssl_version);
1740
1741
1742
1743
1744
1745
1746
1747


















1748

1749

1750



1751

1752
1753
1754
1755
1756
1757
1758
        }

        my_setopt(curl, CURLOPT_CRLF, config->crlf?1L:0L);
        my_setopt_slist(curl, CURLOPT_QUOTE, config->quote);
        my_setopt_slist(curl, CURLOPT_POSTQUOTE, config->postquote);
        my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);

        if(config->cookie)


















          my_setopt_str(curl, CURLOPT_COOKIE, config->cookie);



        if(config->cookiefile)



          my_setopt_str(curl, CURLOPT_COOKIEFILE, config->cookiefile);


        /* new in libcurl 7.9 */
        if(config->cookiejar)
          my_setopt_str(curl, CURLOPT_COOKIEJAR, config->cookiejar);

        /* new in libcurl 7.9.7 */
        my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
|
>
|
>
>
>
|
>







1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
        }

        my_setopt(curl, CURLOPT_CRLF, config->crlf?1L:0L);
        my_setopt_slist(curl, CURLOPT_QUOTE, config->quote);
        my_setopt_slist(curl, CURLOPT_POSTQUOTE, config->postquote);
        my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);

        if(config->cookies) {
          struct curlx_dynbuf cookies;
          struct curl_slist *cl;
          CURLcode ret;

          /* The maximum size needs to match MAX_NAME in cookie.h */
          curlx_dyn_init(&cookies, 4096);
          for(cl = config->cookies; cl; cl = cl->next) {
            if(cl == config->cookies)
              ret = curlx_dyn_addf(&cookies, "%s", cl->data);
            else
              ret = curlx_dyn_addf(&cookies, ";%s", cl->data);

            if(ret) {
              result = CURLE_OUT_OF_MEMORY;
              break;
            }
          }

          my_setopt_str(curl, CURLOPT_COOKIE, curlx_dyn_ptr(&cookies));
          curlx_dyn_free(&cookies);
        }

        if(config->cookiefiles) {
          struct curl_slist *cfl;

          for(cfl = config->cookiefiles; cfl; cfl = cfl->next)
            my_setopt_str(curl, CURLOPT_COOKIEFILE, cfl->data);
        }

        /* new in libcurl 7.9 */
        if(config->cookiejar)
          my_setopt_str(curl, CURLOPT_COOKIEJAR, config->cookiejar);

        /* new in libcurl 7.9.7 */
        my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);
1951
1952
1953
1954
1955
1956
1957



1958
1959
1960
1961
1962
1963
1964
        my_setopt(curl, CURLOPT_MAIL_RCPT_ALLLOWFAILS,
          config->mail_rcpt_allowfails ? 1L : 0L);

        /* curl 7.20.x */
        if(config->ftp_pret)
          my_setopt(curl, CURLOPT_FTP_USE_PRET, 1L);




        if(config->proto_present)
          my_setopt_flags(curl, CURLOPT_PROTOCOLS, config->proto);
        if(config->proto_redir_present)
          my_setopt_flags(curl, CURLOPT_REDIR_PROTOCOLS, config->proto_redir);

        if(config->content_disposition
           && (urlnode->flags & GETOUT_USEREMOTE))







>
>
>







2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
        my_setopt(curl, CURLOPT_MAIL_RCPT_ALLLOWFAILS,
          config->mail_rcpt_allowfails ? 1L : 0L);

        /* curl 7.20.x */
        if(config->ftp_pret)
          my_setopt(curl, CURLOPT_FTP_USE_PRET, 1L);

        if(config->create_file_mode)
          my_setopt(curl, CURLOPT_NEW_FILE_PERMS, config->create_file_mode);

        if(config->proto_present)
          my_setopt_flags(curl, CURLOPT_PROTOCOLS, config->proto);
        if(config->proto_redir_present)
          my_setopt_flags(curl, CURLOPT_REDIR_PROTOCOLS, config->proto_redir);

        if(config->content_disposition
           && (urlnode->flags & GETOUT_USEREMOTE))
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
#ifdef CURLDEBUG
    if(global->test_event_based)
      result = curl_easy_perform_ev(per->curl);
    else
#endif
      result = curl_easy_perform(per->curl);

    /* store the result of the actual transfer */
    returncode = result;

    result = post_per_transfer(global, per, result, &retry, &delay);
    if(retry) {
      tool_go_sleep(delay);
      continue;
    }

    /* Bail out upon critical errors or --fail-early */
    if(result || is_fatal_error(returncode) ||
       (returncode && global->fail_early))
      bailout = TRUE;
    else {
      /* setup the next one just before we delete this */
      result = create_transfer(global, share, &added);
      if(result)
        bailout = TRUE;
    }







<
<
<
|






<
|







2374
2375
2376
2377
2378
2379
2380



2381
2382
2383
2384
2385
2386
2387

2388
2389
2390
2391
2392
2393
2394
2395
#ifdef CURLDEBUG
    if(global->test_event_based)
      result = curl_easy_perform_ev(per->curl);
    else
#endif
      result = curl_easy_perform(per->curl);




    returncode = post_per_transfer(global, per, result, &retry, &delay);
    if(retry) {
      tool_go_sleep(delay);
      continue;
    }

    /* Bail out upon critical errors or --fail-early */

    if(is_fatal_error(returncode) || (returncode && global->fail_early))
      bailout = TRUE;
    else {
      /* setup the next one just before we delete this */
      result = create_transfer(global, share, &added);
      if(result)
        bailout = TRUE;
    }
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
   *
   * We support the environment variable thing for non-Windows platforms
   * too. Just for the sake of it.
   */
  capath_from_env = false;
  if(!config->cacert &&
     !config->capath &&
     !config->insecure_ok) {
    CURL *curltls = curl_easy_init();
    struct curl_tlssessioninfo *tls_backend_info = NULL;

    /* With the addition of CAINFO support for Schannel, this search could find
     * a certificate bundle that was previously ignored. To maintain backward
     * compatibility, only perform this search if not using Schannel.
     */







|







2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
   *
   * We support the environment variable thing for non-Windows platforms
   * too. Just for the sake of it.
   */
  capath_from_env = false;
  if(!config->cacert &&
     !config->capath &&
     (!config->insecure_ok || (config->doh_url && !config->doh_insecure_ok))) {
    CURL *curltls = curl_easy_init();
    struct curl_tlssessioninfo *tls_backend_info = NULL;

    /* With the addition of CAINFO support for Schannel, this search could find
     * a certificate bundle that was previously ignored. To maintain backward
     * compatibility, only perform this search if not using Schannel.
     */
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542

  return result;
}

CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
{
  CURLcode result = CURLE_OK;
  char *first_arg = curlx_convert_tchar_to_UTF8(argv[1]);

  /* Setup proper locale from environment */
#ifdef HAVE_SETLOCALE
  setlocale(LC_ALL, "");
#endif

  /* Parse .curlrc if necessary */







|







2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591

  return result;
}

CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
{
  CURLcode result = CURLE_OK;
  char *first_arg = argc > 1 ? curlx_convert_tchar_to_UTF8(argv[1]) : NULL;

  /* Setup proper locale from environment */
#ifdef HAVE_SETLOCALE
  setlocale(LC_ALL, "");
#endif

  /* Parse .curlrc if necessary */
Changes to jni/curl/src/tool_paramhlp.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
36
37
38
39
40
41
42
43
44
45
46


47
48
49
50
51
52
53
#include "tool_version.h"
#include "dynbuf.h"

#include "memdebug.h" /* keep this as LAST include */

struct getout *new_getout(struct OperationConfig *config)
{
  static int outnum = 0;
  struct getout *node = calloc(1, sizeof(struct getout));
  struct getout *last = config->url_last;
  if(node) {


    /* append this new node last in the list */
    if(last)
      last->next = node;
    else
      config->url_list = node; /* first node */

    /* move the last pointer */







<



>
>







36
37
38
39
40
41
42

43
44
45
46
47
48
49
50
51
52
53
54
#include "tool_version.h"
#include "dynbuf.h"

#include "memdebug.h" /* keep this as LAST include */

struct getout *new_getout(struct OperationConfig *config)
{

  struct getout *node = calloc(1, sizeof(struct getout));
  struct getout *last = config->url_last;
  if(node) {
    static int outnum = 0;

    /* append this new node last in the list */
    if(last)
      last->next = node;
    else
      config->url_list = node; /* first node */

    /* move the last pointer */
Changes to jni/curl/src/tool_progress.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

  else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
    /* 'XX.XM' is good as long as we're less than 100 megs */
    msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
              CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE,
              (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );

#if (CURL_SIZEOF_CURL_OFF_T > 4)

  else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
    /* 'XXXXM' is good until we're at 10000MB or above */
    msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);

  else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
    /* 10000 MB - 100 GB, we show it as XX.XG */







|







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

  else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
    /* 'XX.XM' is good as long as we're less than 100 megs */
    msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
              CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE,
              (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );

#if (SIZEOF_CURL_OFF_T > 4)

  else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
    /* 'XXXXM' is good until we're at 10000MB or above */
    msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);

  else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
    /* 10000 MB - 100 GB, we show it as XX.XG */
Changes to jni/curl/src/tool_version.h.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.75.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "

#endif /* HEADER_CURL_TOOL_VERSION_H */







|






21
22
23
24
25
26
27
28
29
30
31
32
33
34
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.76.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "

#endif /* HEADER_CURL_TOOL_VERSION_H */
Changes to jni/curl/src/tool_writeout.c.
25
26
27
28
29
30
31


































32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

54
55
56
57
58
59
60
61
62
63
64

65
66
67

68
69
70
71

72
73
74

75
76

77
78
79

80
81
82
83
84
85
86





87
88













89
90




91
92

































































































































































93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "curlx.h"
#include "tool_cfgable.h"
#include "tool_writeout.h"
#include "tool_writeout_json.h"

#include "memdebug.h" /* keep this as LAST include */



































static const struct writeoutvar variables[] = {
  {"content_type", VAR_CONTENT_TYPE, 0, CURLINFO_CONTENT_TYPE, JSON_STRING},
  {"filename_effective", VAR_EFFECTIVE_FILENAME, 0, 0, JSON_FILENAME},
  {"exitcode", VAR_EXITCODE, 0, 0, JSON_LONG},
  {"errormsg", VAR_ERRORMSG, 0, 0, JSON_STRING},
  {"ftp_entry_path", VAR_FTP_ENTRY_PATH, 0, CURLINFO_FTP_ENTRY_PATH,
   JSON_STRING},
  {"http_code", VAR_HTTP_CODE, 0, CURLINFO_RESPONSE_CODE, JSON_LONG},
  {"http_connect", VAR_HTTP_CODE_PROXY, 0, CURLINFO_HTTP_CONNECTCODE,
   JSON_LONG},
  {"http_version", VAR_HTTP_VERSION, 0, CURLINFO_HTTP_VERSION, JSON_VERSION},
  {"json", VAR_JSON, 1, 0, JSON_NONE},
  {"local_ip", VAR_LOCAL_IP, 0, CURLINFO_LOCAL_IP, JSON_STRING},
  {"local_port", VAR_LOCAL_PORT, 0, CURLINFO_LOCAL_PORT, JSON_LONG},
  {"method", VAR_EFFECTIVE_METHOD, 0, CURLINFO_EFFECTIVE_METHOD, JSON_STRING},
  {"num_connects", VAR_NUM_CONNECTS, 0, CURLINFO_NUM_CONNECTS, JSON_LONG},
  {"num_headers", VAR_NUM_HEADERS, 0, 0, JSON_LONG},
  {"num_redirects", VAR_REDIRECT_COUNT, 0, CURLINFO_REDIRECT_COUNT, JSON_LONG},
  {"onerror", VAR_ONERROR, 1, 0, JSON_NONE},
  {"proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT, 0,
   CURLINFO_PROXY_SSL_VERIFYRESULT, JSON_LONG},
  {"redirect_url", VAR_REDIRECT_URL, 0, CURLINFO_REDIRECT_URL, JSON_STRING},

  {"remote_ip", VAR_PRIMARY_IP, 0, CURLINFO_PRIMARY_IP, JSON_STRING},
  {"remote_port", VAR_PRIMARY_PORT, 0, CURLINFO_PRIMARY_PORT, JSON_LONG},
  {"response_code", VAR_HTTP_CODE, 0, CURLINFO_RESPONSE_CODE, JSON_LONG},
  {"scheme", VAR_SCHEME, 0, CURLINFO_SCHEME, JSON_STRING},
  {"size_download", VAR_SIZE_DOWNLOAD, 0, CURLINFO_SIZE_DOWNLOAD_T,
   JSON_OFFSET},
  {"size_header", VAR_HEADER_SIZE, 0, CURLINFO_HEADER_SIZE, JSON_LONG},
  {"size_request", VAR_REQUEST_SIZE, 0, CURLINFO_REQUEST_SIZE, JSON_LONG},
  {"size_upload", VAR_SIZE_UPLOAD, 0, CURLINFO_SIZE_UPLOAD_T, JSON_OFFSET},
  {"speed_download", VAR_SPEED_DOWNLOAD, 0, CURLINFO_SPEED_DOWNLOAD_T,
   JSON_OFFSET},

  {"speed_upload", VAR_SPEED_UPLOAD, 0, CURLINFO_SPEED_UPLOAD_T, JSON_OFFSET},
  {"ssl_verify_result", VAR_SSL_VERIFY_RESULT, 0, CURLINFO_SSL_VERIFYRESULT,
   JSON_LONG},

  {"stderr", VAR_STDERR, 1, 0, JSON_NONE},
  {"stdout", VAR_STDOUT, 1, 0, JSON_NONE},
  {"time_appconnect", VAR_APPCONNECT_TIME, 0, CURLINFO_APPCONNECT_TIME_T,
   JSON_TIME},

  {"time_connect", VAR_CONNECT_TIME, 0, CURLINFO_CONNECT_TIME_T, JSON_TIME},
  {"time_namelookup", VAR_NAMELOOKUP_TIME, 0, CURLINFO_NAMELOOKUP_TIME_T,
   JSON_TIME},

  {"time_pretransfer", VAR_PRETRANSFER_TIME, 0, CURLINFO_PRETRANSFER_TIME_T,
   JSON_TIME},

  {"time_redirect", VAR_REDIRECT_TIME, 0, CURLINFO_REDIRECT_TIME_T, JSON_TIME},
  {"time_starttransfer", VAR_STARTTRANSFER_TIME, 0,
   CURLINFO_STARTTRANSFER_TIME_T, JSON_TIME},

  {"time_total", VAR_TOTAL_TIME, 0, CURLINFO_TOTAL_TIME_T, JSON_TIME},
  {"url", VAR_INPUT_URL, 0, 0, JSON_STRING},
  {"url_effective", VAR_EFFECTIVE_URL, 0, CURLINFO_EFFECTIVE_URL, JSON_STRING},
  {"urlnum", VAR_URLNUM, 0, 0, JSON_LONG},
  {NULL, VAR_NONE, 1, 0, JSON_NONE}
};






static void us2sec(FILE *stream, curl_off_t us)
{













  curl_off_t secs = us / 1000000;
  us %= 1000000;




  fprintf(stream, "%" CURL_FORMAT_CURL_OFF_TU ".%06" CURL_FORMAT_CURL_OFF_TU,
          secs, us);

































































































































































}

void ourWriteOut(CURL *curl, struct per_transfer *per, const char *writeinfo,
                 CURLcode result)
{
  FILE *stream = stdout;
  const char *ptr = writeinfo;
  char *stringp = NULL;
  long longinfo;
  curl_off_t offinfo;
  bool done = FALSE;

  while(ptr && *ptr && !done) {
    if('%' == *ptr && ptr[1]) {
      if('%' == ptr[1]) {
        /* an escaped %-letter */
        fputc('%', stream);







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

|
|
|
|
|
<
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
<
|
|
|
|
<
>
|
|
<
>
|
|
|
<
>
|
|
<
>
|
<
>
|
|
<
>
|
|
|
|
|


>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>


|
|



<
<
<







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

72
73

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

92
93
94
95

96
97
98

99
100
101
102

103
104
105

106
107

108
109
110

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314



315
316
317
318
319
320
321
#include "curlx.h"
#include "tool_cfgable.h"
#include "tool_writeout.h"
#include "tool_writeout_json.h"

#include "memdebug.h" /* keep this as LAST include */

static int writeTime(FILE *stream, const struct writeoutvar *wovar,
                     struct per_transfer *per, CURLcode per_result,
                     bool use_json);

static int writeString(FILE *stream, const struct writeoutvar *wovar,
                       struct per_transfer *per, CURLcode per_result,
                       bool use_json);

static int writeLong(FILE *stream, const struct writeoutvar *wovar,
                     struct per_transfer *per, CURLcode per_result,
                     bool use_json);

static int writeOffset(FILE *stream, const struct writeoutvar *wovar,
                       struct per_transfer *per, CURLcode per_result,
                       bool use_json);

static const char *http_version[] = {
  "0",   /* CURL_HTTP_VERSION_NONE */
  "1",   /* CURL_HTTP_VERSION_1_0 */
  "1.1", /* CURL_HTTP_VERSION_1_1 */
  "2",   /* CURL_HTTP_VERSION_2 */
  "3"    /* CURL_HTTP_VERSION_3 */
};

/* The designated write function should be the same as the CURLINFO return type
   with exceptions special cased in the respective function. For example,
   http_version uses CURLINFO_HTTP_VERSION which returns the version as a long,
   however it is output as a string and therefore is handled in writeString.

   Yes: "http_version": "1.1"
   No:  "http_version": 1.1

   Variable names should be in alphabetical order.
   */
static const struct writeoutvar variables[] = {
  {"content_type", VAR_CONTENT_TYPE, CURLINFO_CONTENT_TYPE, writeString},
  {"errormsg", VAR_ERRORMSG, 0, writeString},
  {"exitcode", VAR_EXITCODE, 0, writeLong},
  {"filename_effective", VAR_EFFECTIVE_FILENAME, 0, writeString},
  {"ftp_entry_path", VAR_FTP_ENTRY_PATH, CURLINFO_FTP_ENTRY_PATH, writeString},

  {"http_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
  {"http_connect", VAR_HTTP_CODE_PROXY, CURLINFO_HTTP_CONNECTCODE, writeLong},

  {"http_version", VAR_HTTP_VERSION, CURLINFO_HTTP_VERSION, writeString},
  {"json", VAR_JSON, 0, NULL},
  {"local_ip", VAR_LOCAL_IP, CURLINFO_LOCAL_IP, writeString},
  {"local_port", VAR_LOCAL_PORT, CURLINFO_LOCAL_PORT, writeLong},
  {"method", VAR_EFFECTIVE_METHOD, CURLINFO_EFFECTIVE_METHOD, writeString},
  {"num_connects", VAR_NUM_CONNECTS, CURLINFO_NUM_CONNECTS, writeLong},
  {"num_headers", VAR_NUM_HEADERS, 0, writeLong},
  {"num_redirects", VAR_REDIRECT_COUNT, CURLINFO_REDIRECT_COUNT, writeLong},
  {"onerror", VAR_ONERROR, 0, NULL},
  {"proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT,
   CURLINFO_PROXY_SSL_VERIFYRESULT, writeLong},
  {"redirect_url", VAR_REDIRECT_URL, CURLINFO_REDIRECT_URL, writeString},
  {"referer", VAR_REFERER, CURLINFO_REFERER, writeString},
  {"remote_ip", VAR_PRIMARY_IP, CURLINFO_PRIMARY_IP, writeString},
  {"remote_port", VAR_PRIMARY_PORT, CURLINFO_PRIMARY_PORT, writeLong},
  {"response_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
  {"scheme", VAR_SCHEME, CURLINFO_SCHEME, writeString},
  {"size_download", VAR_SIZE_DOWNLOAD, CURLINFO_SIZE_DOWNLOAD_T, writeOffset},

  {"size_header", VAR_HEADER_SIZE, CURLINFO_HEADER_SIZE, writeLong},
  {"size_request", VAR_REQUEST_SIZE, CURLINFO_REQUEST_SIZE, writeLong},
  {"size_upload", VAR_SIZE_UPLOAD, CURLINFO_SIZE_UPLOAD_T, writeOffset},
  {"speed_download", VAR_SPEED_DOWNLOAD, CURLINFO_SPEED_DOWNLOAD_T,

   writeOffset},
  {"speed_upload", VAR_SPEED_UPLOAD, CURLINFO_SPEED_UPLOAD_T, writeOffset},
  {"ssl_verify_result", VAR_SSL_VERIFY_RESULT, CURLINFO_SSL_VERIFYRESULT,

   writeLong},
  {"stderr", VAR_STDERR, 0, NULL},
  {"stdout", VAR_STDOUT, 0, NULL},
  {"time_appconnect", VAR_APPCONNECT_TIME, CURLINFO_APPCONNECT_TIME_T,

   writeTime},
  {"time_connect", VAR_CONNECT_TIME, CURLINFO_CONNECT_TIME_T, writeTime},
  {"time_namelookup", VAR_NAMELOOKUP_TIME, CURLINFO_NAMELOOKUP_TIME_T,

   writeTime},
  {"time_pretransfer", VAR_PRETRANSFER_TIME, CURLINFO_PRETRANSFER_TIME_T,

   writeTime},
  {"time_redirect", VAR_REDIRECT_TIME, CURLINFO_REDIRECT_TIME_T, writeTime},
  {"time_starttransfer", VAR_STARTTRANSFER_TIME, CURLINFO_STARTTRANSFER_TIME_T,

   writeTime},
  {"time_total", VAR_TOTAL_TIME, CURLINFO_TOTAL_TIME_T, writeTime},
  {"url", VAR_INPUT_URL, 0, writeString},
  {"url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString},
  {"urlnum", VAR_URLNUM, 0, writeLong},
  {NULL, VAR_NONE, 0, NULL}
};

static int writeTime(FILE *stream, const struct writeoutvar *wovar,
                     struct per_transfer *per, CURLcode per_result,
                     bool use_json)
{
  bool valid = false;
  curl_off_t us = 0;

  (void)per;
  (void)per_result;
  DEBUGASSERT(wovar->writefunc == writeTime);

  if(wovar->ci) {
    if(!curl_easy_getinfo(per->curl, wovar->ci, &us))
      valid = true;
  }
  else {
    DEBUGASSERT(0);
  }

  if(valid) {
    curl_off_t secs = us / 1000000;
    us %= 1000000;

    if(use_json)
      fprintf(stream, "\"%s\":", wovar->name);

    fprintf(stream, "%" CURL_FORMAT_CURL_OFF_TU
            ".%06" CURL_FORMAT_CURL_OFF_TU, secs, us);
  }
  else {
    if(use_json)
      fprintf(stream, "\"%s\":null", wovar->name);
  }

  return 1; /* return 1 if anything was written */
}

static int writeString(FILE *stream, const struct writeoutvar *wovar,
                       struct per_transfer *per, CURLcode per_result,
                       bool use_json)
{
  bool valid = false;
  const char *strinfo = NULL;

  DEBUGASSERT(wovar->writefunc == writeString);

  if(wovar->ci) {
    if(wovar->ci == CURLINFO_HTTP_VERSION) {
      long version = 0;
      if(!curl_easy_getinfo(per->curl, CURLINFO_HTTP_VERSION, &version) &&
         (version >= 0) &&
         (version < (long)(sizeof(http_version)/sizeof(http_version[0])))) {
        strinfo = http_version[version];
        valid = true;
      }
    }
    else {
      if(!curl_easy_getinfo(per->curl, wovar->ci, &strinfo) && strinfo)
        valid = true;
    }
  }
  else {
    switch(wovar->id) {
    case VAR_ERRORMSG:
      if(per_result) {
        strinfo = per->errorbuffer[0] ? per->errorbuffer :
                  curl_easy_strerror(per_result);
        valid = true;
      }
      break;
    case VAR_EFFECTIVE_FILENAME:
      if(per->outs.filename) {
        strinfo = per->outs.filename;
        valid = true;
      }
      break;
    case VAR_INPUT_URL:
      if(per->this_url) {
        strinfo = per->this_url;
        valid = true;
      }
      break;
    default:
      DEBUGASSERT(0);
      break;
    }
  }

  if(valid) {
    DEBUGASSERT(strinfo);
    if(use_json) {
      fprintf(stream, "\"%s\":\"", wovar->name);
      jsonWriteString(stream, strinfo);
      fputs("\"", stream);
    }
    else
      fputs(strinfo, stream);
  }
  else {
    if(use_json)
      fprintf(stream, "\"%s\":null", wovar->name);
  }

  return 1; /* return 1 if anything was written */
}

static int writeLong(FILE *stream, const struct writeoutvar *wovar,
                     struct per_transfer *per, CURLcode per_result,
                     bool use_json)
{
  bool valid = false;
  long longinfo = 0;

  DEBUGASSERT(wovar->writefunc == writeLong);

  if(wovar->ci) {
    if(!curl_easy_getinfo(per->curl, wovar->ci, &longinfo))
      valid = true;
  }
  else {
    switch(wovar->id) {
    case VAR_NUM_HEADERS:
      longinfo = per->num_headers;
      valid = true;
      break;
    case VAR_EXITCODE:
      longinfo = per_result;
      valid = true;
      break;
    case VAR_URLNUM:
      if(per->urlnum <= INT_MAX) {
        longinfo = (long)per->urlnum;
        valid = true;
      }
      break;
    default:
      DEBUGASSERT(0);
      break;
    }
  }

  if(valid) {
    if(use_json)
      fprintf(stream, "\"%s\":", wovar->name);

    if(wovar->id == VAR_HTTP_CODE || wovar->id == VAR_HTTP_CODE_PROXY)
      fprintf(stream, "%03ld", longinfo);
    else
      fprintf(stream, "%ld", longinfo);
  }
  else {
    if(use_json)
      fprintf(stream, "\"%s\":null", wovar->name);
  }

  return 1; /* return 1 if anything was written */
}

static int writeOffset(FILE *stream, const struct writeoutvar *wovar,
                       struct per_transfer *per, CURLcode per_result,
                       bool use_json)
{
  bool valid = false;
  curl_off_t offinfo = 0;

  (void)per;
  (void)per_result;
  DEBUGASSERT(wovar->writefunc == writeOffset);

  if(wovar->ci) {
    if(!curl_easy_getinfo(per->curl, wovar->ci, &offinfo))
      valid = true;
  }
  else {
    DEBUGASSERT(0);
  }

  if(valid) {
    if(use_json)
      fprintf(stream, "\"%s\":", wovar->name);

    fprintf(stream, "%" CURL_FORMAT_CURL_OFF_T, offinfo);
  }
  else {
    if(use_json)
      fprintf(stream, "\"%s\":null", wovar->name);
  }

  return 1; /* return 1 if anything was written */
}

void ourWriteOut(const char *writeinfo, struct per_transfer *per,
                 CURLcode per_result)
{
  FILE *stream = stdout;
  const char *ptr = writeinfo;



  bool done = FALSE;

  while(ptr && *ptr && !done) {
    if('%' == *ptr && ptr[1]) {
      if('%' == ptr[1]) {
        /* an escaped %-letter */
        fputc('%', stream);
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350

351


352
353
354
355
356
357
358
          keepit = *end;
          *end = 0; /* null-terminate */
          for(i = 0; variables[i].name; i++) {
            if(curl_strequal(ptr, variables[i].name)) {
              match = TRUE;
              switch(variables[i].id) {
              case VAR_ONERROR:
                if(result == CURLE_OK)
                  /* this isn't error so skip the rest */
                  done = TRUE;
                break;
              case VAR_EXITCODE:
                fprintf(stream, "%d", (int)result);
                break;
              case VAR_ERRORMSG:
                if(result)
                  fputs(per->errorbuffer[0] ? per->errorbuffer :
                        curl_easy_strerror(result), stream);
                break;
              case VAR_INPUT_URL:
                if(per->this_url)
                  fputs(per->this_url, stream);
                break;
              case VAR_URLNUM:
                fprintf(stream, "%u", per->urlnum);
                break;
              case VAR_EFFECTIVE_URL:
                if((CURLE_OK ==
                    curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &stringp))
                   && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_EFFECTIVE_METHOD:
                if((CURLE_OK == curl_easy_getinfo(curl,
                                                  CURLINFO_EFFECTIVE_METHOD,
                                                  &stringp))
                   && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_HTTP_CODE:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &longinfo))
                  fprintf(stream, "%03ld", longinfo);
                break;
              case VAR_NUM_HEADERS:
                fprintf(stream, "%ld", per->num_headers);
                break;
              case VAR_HTTP_CODE_PROXY:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_HTTP_CONNECTCODE,
                                     &longinfo))
                  fprintf(stream, "%03ld", longinfo);
                break;
              case VAR_HEADER_SIZE:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_REQUEST_SIZE:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_NUM_CONNECTS:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_NUM_CONNECTS, &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_REDIRECT_COUNT:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_REDIRECT_TIME:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME_T, &offinfo))
                  us2sec(stream, offinfo);
                break;
              case VAR_TOTAL_TIME:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &offinfo))
                  us2sec(stream, offinfo);
                break;
              case VAR_NAMELOOKUP_TIME:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME_T,
                                     &offinfo))
                  us2sec(stream, offinfo);
                break;
              case VAR_CONNECT_TIME:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME_T, &offinfo))
                  us2sec(stream, offinfo);
                break;
              case VAR_APPCONNECT_TIME:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME_T,
                                     &offinfo))
                  us2sec(stream, offinfo);
                break;
              case VAR_PRETRANSFER_TIME:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME_T,
                                     &offinfo))
                  us2sec(stream, offinfo);
                break;
              case VAR_STARTTRANSFER_TIME:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME_T,
                                     &offinfo))
                  us2sec(stream, offinfo);
                break;
              case VAR_SIZE_UPLOAD:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD_T, &offinfo))
                  fprintf(stream, "%" CURL_FORMAT_CURL_OFF_TU, offinfo);
                break;
              case VAR_SIZE_DOWNLOAD:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD_T,
                                     &offinfo))
                  fprintf(stream, "%" CURL_FORMAT_CURL_OFF_TU, offinfo);
                break;
              case VAR_SPEED_DOWNLOAD:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD_T,
                                     &offinfo))
                  fprintf(stream, "%" CURL_FORMAT_CURL_OFF_TU, offinfo);
                break;
              case VAR_SPEED_UPLOAD:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &offinfo))
                  fprintf(stream, "%" CURL_FORMAT_CURL_OFF_TU, offinfo);
                break;
              case VAR_CONTENT_TYPE:
                if((CURLE_OK ==
                    curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &stringp))
                   && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_FTP_ENTRY_PATH:
                if((CURLE_OK ==
                    curl_easy_getinfo(curl, CURLINFO_FTP_ENTRY_PATH, &stringp))
                   && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_REDIRECT_URL:
                if((CURLE_OK ==
                    curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &stringp))
                   && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_SSL_VERIFY_RESULT:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_SSL_VERIFYRESULT,
                                     &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_PROXY_SSL_VERIFY_RESULT:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_PROXY_SSL_VERIFYRESULT,
                                     &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_EFFECTIVE_FILENAME:
                if(per->outs.filename)
                  fputs(per->outs.filename, stream);
                break;
              case VAR_PRIMARY_IP:
                if((CURLE_OK == curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP,
                                                  &stringp)) && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_PRIMARY_PORT:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_PRIMARY_PORT,
                                     &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_LOCAL_IP:
                if((CURLE_OK == curl_easy_getinfo(curl, CURLINFO_LOCAL_IP,
                                                  &stringp)) && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_LOCAL_PORT:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_LOCAL_PORT,
                                     &longinfo))
                  fprintf(stream, "%ld", longinfo);
                break;
              case VAR_HTTP_VERSION:
                if(CURLE_OK ==
                   curl_easy_getinfo(curl, CURLINFO_HTTP_VERSION,
                                     &longinfo)) {
                  const char *version = "0";
                  switch(longinfo) {
                  case CURL_HTTP_VERSION_1_0:
                    version = "1.0";
                    break;
                  case CURL_HTTP_VERSION_1_1:
                    version = "1.1";
                    break;
                  case CURL_HTTP_VERSION_2_0:
                    version = "2";
                    break;
                  case CURL_HTTP_VERSION_3:
                    version = "3";
                    break;
                  }

                  fprintf(stream, version);
                }
                break;
              case VAR_SCHEME:
                if((CURLE_OK == curl_easy_getinfo(curl, CURLINFO_SCHEME,
                                                  &stringp)) && stringp)
                  fputs(stringp, stream);
                break;
              case VAR_STDOUT:
                stream = stdout;
                break;
              case VAR_STDERR:
                stream = stderr;
                break;
              case VAR_JSON:
                ourWriteOutJSON(variables, curl, per, stream);

              default:


                break;
              }
              break;
            }
          }
          if(!match) {
            fprintf(stderr, "curl: unknown --write-out variable: '%s'\n", ptr);







|



<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







|
>

>
>







337
338
339
340
341
342
343
344
345
346
347















































































































































































































348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
          keepit = *end;
          *end = 0; /* null-terminate */
          for(i = 0; variables[i].name; i++) {
            if(curl_strequal(ptr, variables[i].name)) {
              match = TRUE;
              switch(variables[i].id) {
              case VAR_ONERROR:
                if(per_result == CURLE_OK)
                  /* this isn't error so skip the rest */
                  done = TRUE;
                break;















































































































































































































              case VAR_STDOUT:
                stream = stdout;
                break;
              case VAR_STDERR:
                stream = stderr;
                break;
              case VAR_JSON:
                ourWriteOutJSON(stream, variables, per, per_result);
                break;
              default:
                (void)variables[i].writefunc(stream, &variables[i],
                                             per, per_result, false);
                break;
              }
              break;
            }
          }
          if(!match) {
            fprintf(stderr, "curl: unknown --write-out variable: '%s'\n", ptr);
Changes to jni/curl/src/tool_writeout.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_WRITEOUT_H
#define HEADER_CURL_TOOL_WRITEOUT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_WRITEOUT_H
#define HEADER_CURL_TOOL_WRITEOUT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
50
51
52
53
54
55
56

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86


87
88
89
90
91
92
93
  VAR_PRETRANSFER_TIME,
  VAR_PRIMARY_IP,
  VAR_PRIMARY_PORT,
  VAR_PROXY_SSL_VERIFY_RESULT,
  VAR_REDIRECT_COUNT,
  VAR_REDIRECT_TIME,
  VAR_REDIRECT_URL,

  VAR_REQUEST_SIZE,
  VAR_SCHEME,
  VAR_SIZE_DOWNLOAD,
  VAR_SIZE_UPLOAD,
  VAR_SPEED_DOWNLOAD,
  VAR_SPEED_UPLOAD,
  VAR_SSL_VERIFY_RESULT,
  VAR_STARTTRANSFER_TIME,
  VAR_STDERR,
  VAR_STDOUT,
  VAR_TOTAL_TIME,
  VAR_URLNUM,
  VAR_NUM_OF_VARS /* must be the last */
} writeoutid;

typedef enum {
  JSON_NONE,
  JSON_STRING,
  JSON_LONG,
  JSON_OFFSET,
  JSON_TIME,
  JSON_VERSION,
  JSON_FILENAME
} jsontype;

struct writeoutvar {
  const char *name;
  writeoutid id;
  int is_ctrl;
  CURLINFO cinfo;


  jsontype jsontype;
};

void ourWriteOut(CURL *curl, struct per_transfer *per, const char *writeinfo,
                 CURLcode exitcode);

#endif /* HEADER_CURL_TOOL_WRITEOUT_H */







>















<
<
<
<
<
<
<
<
<
<



<
|
>
>
|


|
|


50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72










73
74
75

76
77
78
79
80
81
82
83
84
85
  VAR_PRETRANSFER_TIME,
  VAR_PRIMARY_IP,
  VAR_PRIMARY_PORT,
  VAR_PROXY_SSL_VERIFY_RESULT,
  VAR_REDIRECT_COUNT,
  VAR_REDIRECT_TIME,
  VAR_REDIRECT_URL,
  VAR_REFERER,
  VAR_REQUEST_SIZE,
  VAR_SCHEME,
  VAR_SIZE_DOWNLOAD,
  VAR_SIZE_UPLOAD,
  VAR_SPEED_DOWNLOAD,
  VAR_SPEED_UPLOAD,
  VAR_SSL_VERIFY_RESULT,
  VAR_STARTTRANSFER_TIME,
  VAR_STDERR,
  VAR_STDOUT,
  VAR_TOTAL_TIME,
  VAR_URLNUM,
  VAR_NUM_OF_VARS /* must be the last */
} writeoutid;











struct writeoutvar {
  const char *name;
  writeoutid id;

  CURLINFO ci;
  int (*writefunc)(FILE *stream, const struct writeoutvar *wovar,
                   struct per_transfer *per, CURLcode per_result,
                   bool use_json);
};

void ourWriteOut(const char *writeinfo, struct per_transfer *per,
                 CURLcode per_result);

#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
Changes to jni/curl/src/tool_writeout_json.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* use our own printf() functions */
#include "curlx.h"
#include "tool_cfgable.h"
#include "tool_writeout_json.h"
#include "tool_writeout.h"


static const char *http_version[] = {
  "0",   /* CURL_HTTP_VERSION_NONE */
  "1",   /* CURL_HTTP_VERSION_1_0 */
  "1.1", /* CURL_HTTP_VERSION_1_1 */
  "2",   /* CURL_HTTP_VERSION_2 */
  "3"    /* CURL_HTTP_VERSION_3 */
};

static void jsonEscape(FILE *stream, const char *in)
{
  const char *i = in;
  const char *in_end = in + strlen(in);

  for(; i < in_end; i++) {
    switch(*i) {
    case '\\':







<
<
<
<
<
<
<
<
|







26
27
28
29
30
31
32








33
34
35
36
37
38
39
40
/* use our own printf() functions */
#include "curlx.h"
#include "tool_cfgable.h"
#include "tool_writeout_json.h"
#include "tool_writeout.h"










void jsonWriteString(FILE *stream, const char *in)
{
  const char *i = in;
  const char *in_end = in + strlen(in);

  for(; i < in_end; i++) {
    switch(*i) {
    case '\\':
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201

202


203
        fputc(*i, stream);
      }
      break;
    }
  }
}

static int writeTime(FILE *str, CURL *curl, const char *key, CURLINFO ci)
{
  curl_off_t val = 0;
  if(CURLE_OK == curl_easy_getinfo(curl, ci, &val)) {
    curl_off_t s = val / 1000000l;
    curl_off_t ms = val % 1000000l;
    fprintf(str, "\"%s\":%" CURL_FORMAT_CURL_OFF_T
            ".%06" CURL_FORMAT_CURL_OFF_T, key, s, ms);
    return 1;
  }
  return 0;
}

static int writeString(FILE *str, CURL *curl, const char *key, CURLINFO ci)
{
  char *valp = NULL;
  if((CURLE_OK == curl_easy_getinfo(curl, ci, &valp)) && valp) {
    fprintf(str, "\"%s\":\"", key);
    jsonEscape(str, valp);
    fprintf(str, "\"");
    return 1;
  }
  return 0;
}

static int writeLong(FILE *str, CURL *curl, const char *key, CURLINFO ci,
                     struct per_transfer *per, const struct writeoutvar *wovar)
{
  if(wovar->id == VAR_NUM_HEADERS) {
    fprintf(str, "\"%s\":%ld", key, per->num_headers);
    return 1;
  }
  else {
    long val = 0;
    if(CURLE_OK == curl_easy_getinfo(curl, ci, &val)) {
      fprintf(str, "\"%s\":%ld", key, val);
      return 1;
    }
  }
  return 0;
}

static int writeOffset(FILE *str, CURL *curl, const char *key, CURLINFO ci)
{
  curl_off_t val = 0;
  if(CURLE_OK == curl_easy_getinfo(curl, ci, &val)) {
    fprintf(str, "\"%s\":%" CURL_FORMAT_CURL_OFF_T, key, val);
    return 1;
  }
  return 0;
}

static int writeFilename(FILE *str, const char *key, const char *filename)
{
  if(filename) {
    fprintf(str, "\"%s\":\"", key);
    jsonEscape(str, filename);
    fprintf(str, "\"");
  }
  else {
    fprintf(str, "\"%s\":null", key);
  }
  return 1;
}

static int writeVersion(FILE *str, CURL *curl, const char *key, CURLINFO ci)
{
  long version = 0;
  if(CURLE_OK == curl_easy_getinfo(curl, ci, &version) &&
     (version >= 0) &&
     (version < (long)(sizeof(http_version)/sizeof(char *)))) {
    fprintf(str, "\"%s\":\"%s\"", key, http_version[version]);
    return 1;
  }
  return 0;
}

void ourWriteOutJSON(const struct writeoutvar mappings[], CURL *curl,
                     struct per_transfer *per, FILE *stream)
{
  int i;

  fputs("{", stream);
  for(i = 0; mappings[i].name != NULL; i++) {
    const struct writeoutvar *wovar = &mappings[i];
    const char *name = mappings[i].name;
    CURLINFO cinfo = mappings[i].cinfo;
    int ok = 0;

    if(mappings[i].is_ctrl == 1) {
      continue;
    }

    switch(mappings[i].jsontype) {
    case JSON_STRING:
      ok = writeString(stream, curl, name, cinfo);
      break;
    case JSON_LONG:
      ok = writeLong(stream, curl, name, cinfo, per, wovar);
      break;
    case JSON_OFFSET:
      ok = writeOffset(stream, curl, name, cinfo);
      break;
    case JSON_TIME:
      ok = writeTime(stream, curl, name, cinfo);
      break;
    case JSON_FILENAME:
      ok = writeFilename(stream, name, per->outs.filename);
      break;
    case JSON_VERSION:
      ok = writeVersion(stream, curl, name, cinfo);
      break;
    default:
      break;
    }

    if(ok) {
      fputs(",", stream);
    }
  }


  fprintf(stream, "\"curl_version\":\"%s\"}", curl_version());


}







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|




<
<
<
<
<

|
<
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
<

|
|
|
>
|
>
>

66
67
68
69
70
71
72













































































73
74
75
76
77
78





79
80



81





















82

83
84
85
86
87
88
89
90
91
        fputc(*i, stream);
      }
      break;
    }
  }
}














































































void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
                     struct per_transfer *per, CURLcode per_result)
{
  int i;

  fputs("{", stream);






  for(i = 0; mappings[i].name != NULL; i++) {



    if(mappings[i].writefunc &&





















       mappings[i].writefunc(stream, &mappings[i], per, per_result, true))

      fputs(",", stream);
  }

  /* The variables are sorted in alphabetical order but as a special case
     curl_version (which is not actually a --write-out variable) is last. */
  fprintf(stream, "\"curl_version\":\"");
  jsonWriteString(stream, curl_version());
  fprintf(stream, "\"}");
}
Changes to jni/curl/src/tool_writeout_json.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29


30
#ifndef HEADER_CURL_TOOL_WRITEOUT_JSON_H
#define HEADER_CURL_TOOL_WRITEOUT_JSON_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "tool_setup.h"
#include "tool_writeout.h"

void ourWriteOutJSON(const struct writeoutvar mappings[], CURL *curl,
                     struct per_transfer *per, FILE *stream);



#endif /* HEADER_CURL_TOOL_WRITEOUT_H */









|
















|
|

>
>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef HEADER_CURL_TOOL_WRITEOUT_JSON_H
#define HEADER_CURL_TOOL_WRITEOUT_JSON_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "tool_setup.h"
#include "tool_writeout.h"

void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
                     struct per_transfer *per, CURLcode per_result);

void jsonWriteString(FILE *stream, const char *in);

#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
Changes to jni/curl/src/tool_xattr.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
40
41
42
43
44
45
46

47
48
49
50
51
52
53
54
55
56
static const struct xattr_mapping {
  const char *attr; /* name of the xattr */
  CURLINFO info;
} mappings[] = {
  /* mappings proposed by
   * https://freedesktop.org/wiki/CommonExtendedAttributes/
   */

  { "user.xdg.origin.url", CURLINFO_EFFECTIVE_URL },
  { "user.mime_type",      CURLINFO_CONTENT_TYPE },
  { NULL,                  CURLINFO_NONE } /* last element, abort loop here */
};

/* returns TRUE if a new URL is returned, that then needs to be freed */
/* @unittest: 1621 */
#ifdef UNITTESTS
bool stripcredentials(char **url);
#else







>
|
|
|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
static const struct xattr_mapping {
  const char *attr; /* name of the xattr */
  CURLINFO info;
} mappings[] = {
  /* mappings proposed by
   * https://freedesktop.org/wiki/CommonExtendedAttributes/
   */
  { "user.xdg.referrer.url", CURLINFO_REFERER },
  { "user.xdg.origin.url",   CURLINFO_EFFECTIVE_URL },
  { "user.mime_type",        CURLINFO_CONTENT_TYPE },
  { NULL,                    CURLINFO_NONE } /* last element, abort here */
};

/* returns TRUE if a new URL is returned, that then needs to be freed */
/* @unittest: 1621 */
#ifdef UNITTESTS
bool stripcredentials(char **url);
#else
Changes to jni/curl/tests/FILEFORMAT.md.
145
146
147
148
149
150
151

152
153
154
155
156
157
158
- `%SMTP6PORT` - IPv6 port number of the SMTP server
- `%SMTPPORT` - Port number of the SMTP server
- `%SOCKSPORT` - Port number of the SOCKS4/5 server
- `%SRCDIR` - Full path to the source dir
- `%SSHPORT` - Port number of the SCP/SFTP server
- `%SSHSRVMD5` - MD5 of SSH server's public key
- `%SSH_PWD` - Current directory friendly for the SSH server

- `%TFTP6PORT` - IPv6 port number of the TFTP server
- `%TFTPPORT` - Port number of the TFTP server
- `%USER` - Login ID of the user running the test
- `%VERSION` - the full version number of the tested curl

# `<testcase>`








>







145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
- `%SMTP6PORT` - IPv6 port number of the SMTP server
- `%SMTPPORT` - Port number of the SMTP server
- `%SOCKSPORT` - Port number of the SOCKS4/5 server
- `%SRCDIR` - Full path to the source dir
- `%SSHPORT` - Port number of the SCP/SFTP server
- `%SSHSRVMD5` - MD5 of SSH server's public key
- `%SSH_PWD` - Current directory friendly for the SSH server
- `%TESTNUMBER` - Number of the test case
- `%TFTP6PORT` - IPv6 port number of the TFTP server
- `%TFTPPORT` - Port number of the TFTP server
- `%USER` - Login ID of the user running the test
- `%VERSION` - the full version number of the tested curl

# `<testcase>`

401
402
403
404
405
406
407

408
409
410
411
412
413
414
- `SSL`
- `SSLpinning`
- `SSPI`
- `threaded-resolver`
- `TLS-SRP`
- `TrackMemory`
- `typecheck`

- `unittest`
- `unix-sockets`
- `verbose-strings`
- `wakeup`
- `win32`

as well as each protocol that curl supports.  A protocol only needs to be







>







402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
- `SSL`
- `SSLpinning`
- `SSPI`
- `threaded-resolver`
- `TLS-SRP`
- `TrackMemory`
- `typecheck`
- `Unicode`
- `unittest`
- `unix-sockets`
- `verbose-strings`
- `wakeup`
- `win32`

as well as each protocol that curl supports.  A protocol only needs to be
Changes to jni/curl/tests/Makefile.in.
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364

365
366
367



368
369
370
371
372
373
374
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







343
344
345
346
347
348
349

350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/tests/README.md.
8
9
10
11
12
13
14

15
16
17
18
19
20
21
  - python (and a unix-style shell, for SMB and TELNET tests)
  - python-impacket (for SMB tests)
  - diff (when a test fails, a diff is shown)
  - stunnel (for HTTPS and FTPS tests)
  - OpenSSH or SunSSH (for SCP, SFTP and SOCKS4/5 tests)
  - nghttpx (for HTTP/2 tests)
  - nroff (for --manual tests)


### Installation of python-impacket

  The Python-based test servers support both recent Python 2 and 3.
  You can figure out your default Python interpreter with python -V

  Please install python-impacket in the correct Python environment.







>







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  - python (and a unix-style shell, for SMB and TELNET tests)
  - python-impacket (for SMB tests)
  - diff (when a test fails, a diff is shown)
  - stunnel (for HTTPS and FTPS tests)
  - OpenSSH or SunSSH (for SCP, SFTP and SOCKS4/5 tests)
  - nghttpx (for HTTP/2 tests)
  - nroff (for --manual tests)
  - An available `en_US.UTF-8` locale

### Installation of python-impacket

  The Python-based test servers support both recent Python 2 and 3.
  You can figure out your default Python interpreter with python -V

  Please install python-impacket in the correct Python environment.
Changes to jni/curl/tests/badsymbols.pl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2010-2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2010-2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
            push @syms, $1;
        }
    }
    close H;
}


opendir(my $dh, $incdir) || die "Can't opendir: $!";
my @hfiles = grep { /\.h$/ } readdir($dh);
closedir $dh;

for(@hfiles) {
    scanheader("$incdir/$_");
}








|







128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
            push @syms, $1;
        }
    }
    close H;
}


opendir(my $dh, $incdir) || die "Can't opendir $incdir: $!";
my @hfiles = grep { /\.h$/ } readdir($dh);
closedir $dh;

for(@hfiles) {
    scanheader("$incdir/$_");
}

Changes to jni/curl/tests/certs/Makefile.in.
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343

344
345
346



347
348
349
350
351
352
353
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







322
323
324
325
326
327
328

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/tests/certs/scripts/Makefile.in.
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283

284
285
286



287
288
289
290
291
292
293
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







262
263
264
265
266
267
268

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/tests/data/DISABLED.
1
2
3
4
5
6
7
8
9
10
11
12
13




14
15
16
17
18
19
20
# This file can be used to specify test cases that should not run when all
# test cases are run by runtests.pl. Just add the plain test case numbers, one
# per line.
# Lines starting with '#' letters are treated as comments.
#
# Uses SRP to "a server not supporting it" but modern stunnel versions
# will silently accept it and remain happy
323
#
594
836
882
938




1209
1211
# fnmatch differences are just too common to make testing them sensible
1307
1316
# test 1510 causes problems on the CI on github
# example: https://travis-ci.org/curl/curl/builds/81633600













>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# This file can be used to specify test cases that should not run when all
# test cases are run by runtests.pl. Just add the plain test case numbers, one
# per line.
# Lines starting with '#' letters are treated as comments.
#
# Uses SRP to "a server not supporting it" but modern stunnel versions
# will silently accept it and remain happy
323
#
594
836
882
938
# test 1182 kills the test servers as a side effect
# of running runtests.pl as a child of itself sharing
# some of the directories.
1182
1209
1211
# fnmatch differences are just too common to make testing them sensible
1307
1316
# test 1510 causes problems on the CI on github
# example: https://travis-ci.org/curl/curl/builds/81633600
Changes to jni/curl/tests/data/Makefile.in.
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305

306
307
308



309
310
311
312
313
314
315
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







284
285
286
287
288
289
290

291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
403
404
405
406
407
408
409
410
411
412

413
414
415
416
417
418
419
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 test344 test345 test346 test347 test348 \
test350 test351 test352 test353 test354 test355 test356 test357 test358 \
test359 \

test393 test394 test395 test396 test397 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 test410 \
\
test430 test431 test432 test433 test434 \
\







|
|
|
>







406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 test344 test345 test346 test347 test348 test349 test350 test351 \
test352 test353 test354 test355 test356 test357 test358 test359 test360 \
test361 test362 \
\
test393 test394 test395 test396 test397 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 test410 \
\
test430 test431 test432 test433 test434 \
\
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 test664 test665 test666 test667 test668 test669 \
test670 test671 test672 test673 test674 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \







|







438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 test664 test665 test666 test667 test668 test669 \
test670 test671 test672 test673 test674 test675 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504

505
506
507
508
509
510
511
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 \
test1168          test1170 test1171 test1172 test1173 test1174 test1175 \
test1176 test1177 test1178 test1179 test1180 test1181 \
\
test1188 \
\
test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 \
test1198 test1199 \
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 test1220                   test1223 \
test1224 test1225 test1226 test1227 test1228 test1229 test1230 test1231 \
test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 \
test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
test1272 \

test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
test1296 test1297 test1298 test1299 test1300 test1301 test1302 test1303 \
test1304 test1305 test1306 test1307 test1308 test1309 test1310 test1311 \
test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 \
test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 \
test1328 test1329 test1330 test1331 test1332 test1333 test1334 test1335 \







|
|














|
>







485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 \
test1168 test1169 test1170 test1171 test1172 test1173 test1174 test1175 \
test1176 test1177 test1178 test1179 test1180 test1181 test1182 test1183 \
\
test1188 \
\
test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 \
test1198 test1199 \
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 test1220                   test1223 \
test1224 test1225 test1226 test1227 test1228 test1229 test1230 test1231 \
test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 \
test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
test1272 test1273 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
test1296 test1297 test1298 test1299 test1300 test1301 test1302 test1303 \
test1304 test1305 test1306 test1307 test1308 test1309 test1310 test1311 \
test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 \
test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 \
test1328 test1329 test1330 test1331 test1332 test1333 test1334 test1335 \
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540 \
\
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
test1566 test1567 test1568 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1610 test1611 test1612 test1613 \
\
test1620 test1621 \
\
test1630 test1631 test1632 test1633 test1634 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
test1660 \
\
test1700 test1701 test1702 \
\
test1800 test1801 \
\
                                    test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
test1916 test1917 test1918 \
\







|













|







537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540 \
\
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
test1566 test1567 test1568 test1569 test1570 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1610 test1611 test1612 test1613 \
\
test1620 test1621 \
\
test1630 test1631 test1632 test1633 test1634 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
test1660 \
\
test1700 test1701 test1702 test1703 \
\
test1800 test1801 \
\
                                    test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
test1916 test1917 test1918 \
\
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \
test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
test2064 test2065 test2066 test2067 test2068 test2069 \
test2064 test2065 test2066 test2067 test2068 test2069 test2070 \
         test2071 test2072 test2073 test2074 test2075 test2076 test2077 \
test2078 \
test2080 \
test2100 \
\
test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015


# TESTCASES are taken from Makefile.inc







|







573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \
test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
test2064 test2065 test2066 test2067 test2068 test2069 \
test2064 test2065 test2066 test2067 test2068 test2069 test2070 \
         test2071 test2072 test2073 test2074 test2075 test2076 test2077 \
test2078 \
test2080 test2081 \
test2100 \
\
test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015


# TESTCASES are taken from Makefile.inc
Changes to jni/curl/tests/data/Makefile.inc.
54
55
56
57
58
59
60
61
62
63

64
65
66
67
68
69
70
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 test344 test345 test346 test347 test348 \
test350 test351 test352 test353 test354 test355 test356 test357 test358 \
test359 \

test393 test394 test395 test396 test397 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 test410 \
\
test430 test431 test432 test433 test434 \
\







|
|
|
>







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 test344 test345 test346 test347 test348 test349 test350 test351 \
test352 test353 test354 test355 test356 test357 test358 test359 test360 \
test361 test362 \
\
test393 test394 test395 test396 test397 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 test410 \
\
test430 test431 test432 test433 test434 \
\
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 test664 test665 test666 test667 test668 test669 \
test670 test671 test672 test673 test674 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \







|







86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 test664 test665 test666 test667 test668 test669 \
test670 test671 test672 test673 test674 test675 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155

156
157
158
159
160
161
162
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 \
test1168          test1170 test1171 test1172 test1173 test1174 test1175 \
test1176 test1177 test1178 test1179 test1180 test1181 \
\
test1188 \
\
test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 \
test1198 test1199 \
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 test1220                   test1223 \
test1224 test1225 test1226 test1227 test1228 test1229 test1230 test1231 \
test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 \
test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
test1272 \

test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
test1296 test1297 test1298 test1299 test1300 test1301 test1302 test1303 \
test1304 test1305 test1306 test1307 test1308 test1309 test1310 test1311 \
test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 \
test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 \
test1328 test1329 test1330 test1331 test1332 test1333 test1334 test1335 \







|
|














|
>







133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 \
test1168 test1169 test1170 test1171 test1172 test1173 test1174 test1175 \
test1176 test1177 test1178 test1179 test1180 test1181 test1182 test1183 \
\
test1188 \
\
test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 \
test1198 test1199 \
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 test1220                   test1223 \
test1224 test1225 test1226 test1227 test1228 test1229 test1230 test1231 \
test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 \
test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
test1272 test1273 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
test1296 test1297 test1298 test1299 test1300 test1301 test1302 test1303 \
test1304 test1305 test1306 test1307 test1308 test1309 test1310 test1311 \
test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 \
test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 \
test1328 test1329 test1330 test1331 test1332 test1333 test1334 test1335 \
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540 \
\
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
test1566 test1567 test1568 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1610 test1611 test1612 test1613 \
\
test1620 test1621 \
\
test1630 test1631 test1632 test1633 test1634 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
test1660 \
\
test1700 test1701 test1702 \
\
test1800 test1801 \
\
                                    test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
test1916 test1917 test1918 \
\







|













|







185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540 \
\
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
test1566 test1567 test1568 test1569 test1570 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1610 test1611 test1612 test1613 \
\
test1620 test1621 \
\
test1630 test1631 test1632 test1633 test1634 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
test1660 \
\
test1700 test1701 test1702 test1703 \
\
test1800 test1801 \
\
                                    test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
test1916 test1917 test1918 \
\
219
220
221
222
223
224
225
226
227
228
229
230
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \
test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
test2064 test2065 test2066 test2067 test2068 test2069 \
test2064 test2065 test2066 test2067 test2068 test2069 test2070 \
         test2071 test2072 test2073 test2074 test2075 test2076 test2077 \
test2078 \
test2080 \
test2100 \
\
test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015







|




221
222
223
224
225
226
227
228
229
230
231
232
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \
test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
test2064 test2065 test2066 test2067 test2068 test2069 \
test2064 test2065 test2066 test2067 test2068 test2069 test2070 \
         test2071 test2072 test2073 test2074 test2075 test2076 test2077 \
test2078 \
test2080 test2081 \
test2100 \
\
test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015
Changes to jni/curl/tests/data/test1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP GET
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP GET
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test10.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP PUT from file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/10 -T log/test10.txt
</command>
<file name="log/test10.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/10 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird











|
















|

|















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP PUT from file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -T log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird
Changes to jni/curl/tests/data/test100.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP dir list PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/test-100/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD test-100
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>







|










|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP dir list PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/test-%TESTNUMBER/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD test-%TESTNUMBER
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1000.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
ftp
</server>
 <name>
FTP dir list PASV with -I
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1000/ -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD 1000
QUIT
</protocol>
</verify>
</testcase>







|










|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
ftp
</server>
 <name>
FTP dir list PASV with -I
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/ -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1001.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT and resumed upload and modified method
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1001 -u auser:apasswd --digest -T log/1001 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/1001">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1001", response="6af4d89c952f4dd4cc215a6878dc499d"
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue








|

|







|







|

|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT and resumed upload and modified method
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -T log/%TESTNUMBER -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/%TESTNUMBER">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="6af4d89c952f4dd4cc215a6878dc499d"
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue

Changes to jni/curl/tests/data/test1002.
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
crypto
proxy
</features>
 <name>
HTTP PUT with Digest auth, resumed upload and modified method, twice
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1002.upload1 -T log/1002 http://%HOSTIP:%HTTPPORT/1002.upload2 -T log/1002 -u auser:apasswd --digest -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/1002">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue

st
GET http://%HOSTIP:%HTTPPORT/1002.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/1002.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload2", response="d711f0d2042786d930de635ba0d1a1d0"
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue








|

|







|







|

|








|







|

|







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
crypto
proxy
</features>
 <name>
HTTP PUT with Digest auth, resumed upload and modified method, twice
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 -T log/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload2 -T log/%TESTNUMBER -u auser:apasswd --digest -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/%TESTNUMBER">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue

st
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER.upload2", response="d711f0d2042786d930de635ba0d1a1d0"
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue

Changes to jni/curl/tests/data/test1003.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP with excessively large server command response line
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/1003
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 1003
RETR 1003
QUIT
</protocol>
</verify>
</testcase>







|












|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP with excessively large server command response line
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1004.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http
</server>
 <name>
HTTP GET with empty proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1004 --proxy ""
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1004 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<valgrind>
disable
</valgrind>
</verify>
</testcase>







|







|










32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http
</server>
 <name>
HTTP GET with empty proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy ""
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<valgrind>
disable
</valgrind>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1005.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP with excessively large number of server command response lines
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/1005
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 1005
RETR 1005
QUIT
</protocol>
</verify>
</testcase>







|












|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP with excessively large number of server command response lines
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1006.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP with excessively large number of server command response lines (boundary condition)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/1006
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 1006
RETR 1006
QUIT
</protocol>
</verify>
</testcase>







|












|
|




24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP with excessively large number of server command response lines (boundary condition)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1007.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
tftp
</server>
 <name>
TFTP send with invalid permission on server
 </name>
 <command>
-T log/test1007.txt tftp://%HOSTIP:%TFTPPORT//invalid-file
</command>
<file name="log/test1007.txt">
This data will not be sent
</file>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>







|

|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
tftp
</server>
 <name>
TFTP send with invalid permission on server
 </name>
 <command>
-T log/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//invalid-file
</command>
<file name="log/test%TESTNUMBER.txt">
This data will not be sent
</file>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test1008.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Transfer-Encoding: chunked

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Transfer-Encoding: chunked

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.1008:%HTTPPORT/path/10080002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.1008:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.1008:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.1008:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.1008:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/10080002 HTTP/1.1
Host: test.remote.example.com.1008:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|









|
|




|
|




|
|







97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1009.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
tftp
</server>
 <name>
TFTP retrieve with --local-port
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//1009 --local-port 44444-45444
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /1009
</protocol>
</verify>
</testcase>







|












|



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
tftp
</server>
 <name>
TFTP retrieve with --local-port
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --local-port 44444-45444
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1010.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP dir list nocwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//list/this/path/1010/ ftp://%HOSTIP:%FTPPORT//list/this/path/1010/ --ftp-method nocwd
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST /list/this/path/1010
EPSV
LIST /list/this/path/1010
QUIT
</protocol>
</verify>
</testcase>







|












|

|




32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP dir list nocwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//list/this/path/%TESTNUMBER/ ftp://%HOSTIP:%FTPPORT//list/this/path/%TESTNUMBER/ --ftp-method nocwd
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST /list/this/path/%TESTNUMBER
EPSV
LIST /list/this/path/%TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1011.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK
Location: moo.html&testcase=/10110002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 301 OK
Location: moo.html&testcase=/10110002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 301 redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/1011 -L -d "moo"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /blah/1011 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooGET /blah/moo.html&testcase=/10110002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 301 OK
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 301 redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/%TESTNUMBER -L -d "moo"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /blah/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooGET /blah/moo.html&testcase=/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1012.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/10120002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/10120002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 301 redirect and --post301
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/1012 -L -d "moo" --post301
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/1012 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /blah/moo.html&testcase=/10120002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|






|










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 301 redirect and --post301
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/%TESTNUMBER -L -d "moo" --post301
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /blah/moo.html&testcase=/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1013.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --protocols
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1013.pl ../curl-config log/stdout1013 protocols
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --protocols
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test%TESTNUMBER.pl ../curl-config log/stdout%TESTNUMBER protocols
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1014.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --features
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1013.pl ../curl-config log/stdout1014 features
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --features
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1013.pl ../curl-config log/stdout%TESTNUMBER features
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1015.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
 <name>
--data-urlencode
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1015 --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@log/1015.txt" --data-urlencode @log/1015.txt 
</command>
<file name="log/1015.txt">
content to _?!#$'|<>
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /1015 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 133
Content-Type: application/x-www-form-urlencoded

my%20name%20is%20moo%5B%5D&y e s=s_i_r&v_alue=content%20to%20_%3F%21%23%24%27%7C%3C%3E%0A&content%20to%20_%3F%21%23%24%27%7C%3C%3E%0A







|

|








|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
 <name>
--data-urlencode
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@log/%TESTNUMBER.txt" --data-urlencode @log/%TESTNUMBER.txt 
</command>
<file name="log/%TESTNUMBER.txt">
content to _?!#$'|<>
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 133
Content-Type: application/x-www-form-urlencoded

my%20name%20is%20moo%5B%5D&y e s=s_i_r&v_alue=content%20to%20_%3F%21%23%24%27%7C%3C%3E%0A&content%20to%20_%3F%21%23%24%27%7C%3C%3E%0A
Changes to jni/curl/tests/data/test1016.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
file
</features>
 <name>
X-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 1-4 file://localhost%FILE_PWD/log/test1016.txt 
</command>
<file name="log/test1016.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
file
</features>
 <name>
X-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 1-4 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 
</command>
<file name="log/test%TESTNUMBER.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
Changes to jni/curl/tests/data/test1017.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
file
</features>
 <name>
0-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 0-3 file://localhost%FILE_PWD/log/test1017.txt 
</command>
<file name="log/test1017.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
file
</features>
 <name>
0-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 0-3 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 
</command>
<file name="log/test%TESTNUMBER.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
Changes to jni/curl/tests/data/test1018.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
file
</features>
 <name>
X-X range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 4-4 file://localhost%FILE_PWD/log/test1018.txt 
</command>
<file name="log/test1018.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
file
</features>
 <name>
X-X range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 4-4 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 
</command>
<file name="log/test%TESTNUMBER.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
Changes to jni/curl/tests/data/test1019.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
file
</features>
 <name>
X- range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 7- file://localhost%FILE_PWD/log/test1019.txt 
</command>
<file name="log/test1019.txt">
1234567890
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
file
</features>
 <name>
X- range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 7- file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 
</command>
<file name="log/test%TESTNUMBER.txt">
1234567890
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test102.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP RETR PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/102
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 102
RETR 102
QUIT
</protocol>
</verify>
</testcase>







|













|
|




26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP RETR PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1020.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
file
</features>
 <name>
-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r -9 file://localhost%FILE_PWD/log/test1020.txt 
</command>
<file name="log/test1020.txt">
1234567890
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
file
</features>
 <name>
-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r -9 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 
</command>
<file name="log/test%TESTNUMBER.txt">
1234567890
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test1021.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Content-Length: 28

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Content-Length: 28

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.1021:%HTTPPORT/path/10210002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth --proxytunnel
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.1021:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.1021:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.1021:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.1021:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.1021:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.1021:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/10210002 HTTP/1.1
Host: test.remote.example.com.1021:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|
|



|
|




|
|




|
|






102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth --proxytunnel
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1022.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --version
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1022.pl ../curl-config log/stdout1022 version
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --version
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test%TESTNUMBER.pl ../curl-config log/stdout%TESTNUMBER version
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1023.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --vernum
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1022.pl ../curl-config log/stdout1023 vernum
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <name>
Compare curl --version with curl-config --vernum
 </name>
 <command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1022.pl ../curl-config log/stdout%TESTNUMBER vernum
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1024.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10240002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data>
<data2>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10240003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data2>
<data3>
HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10240002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10240003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with cookies
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1024 -L -c log/jar1024
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1024 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /data/10240002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/10240003.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: firstcookie=want

</protocol>
</verify>
</testcase>







|

|








|

|








|








|

|




|

|




|

















|






|




|




|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/%TESTNUMBER0002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data>
<data2>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/%TESTNUMBER0003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data2>
<data3>
HTTP/1.1 200 Followed here fine
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/%TESTNUMBER0002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/%TESTNUMBER0003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

HTTP/1.1 200 Followed here fine
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with cookies
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -c log/jar%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /data/%TESTNUMBER0002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/%TESTNUMBER0003.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: firstcookie=want

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1025.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10250002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data>
<data2>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10250003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data2>
<data3>
HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10250002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10250003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with command-line and server cookies
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1025 -L -c log/jar1025 -b forcedcookie=yes
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1025 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: forcedcookie=yes

GET /data/10250002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: forcedcookie=yes

GET /want/10250003.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: firstcookie=want; forcedcookie=yes

</protocol>
</verify>
</testcase>







|

|








|

|








|








|

|




|

|




|

















|






|





|





|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/%TESTNUMBER0002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data>
<data2>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/%TESTNUMBER0003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

This server reply is for testing a Location: following with cookies

</data2>
<data3>
HTTP/1.1 200 Followed here fine
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/%TESTNUMBER0002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69

HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/%TESTNUMBER0003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69

HTTP/1.1 200 Followed here fine
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with command-line and server cookies
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -c log/jar%TESTNUMBER -b forcedcookie=yes
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: forcedcookie=yes

GET /data/%TESTNUMBER0002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: forcedcookie=yes

GET /want/%TESTNUMBER0003.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: firstcookie=want; forcedcookie=yes

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1026.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 </name>
 <command>
--manual
</command>
# Search for these two sentinel lines in the manual output; if they are found,
# then chances are good the entire manual is there.
<postcheck>
perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(curl\s*-\s*transfer\sa\s*URL)|(CONTRIBUTORS)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout1026
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 </name>
 <command>
--manual
</command>
# Search for these two sentinel lines in the manual output; if they are found,
# then chances are good the entire manual is there.
<postcheck>
perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(curl\s*-\s*transfer\sa\s*URL)|(CONTRIBUTORS)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1027.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 </name>
 <command>
--help
</command>
# Search for these two sentinel lines in the help output; if they are found,
# then chances are good the entire help is there.
<postcheck>
perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(Usage: curl )|(--version\s*Show version)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout1027
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 </name>
 <command>
--help
</command>
# Search for these two sentinel lines in the help output; if they are found,
# then chances are good the entire help is there.
<postcheck>
perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(Usage: curl )|(--version\s*Show version)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1028.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</info>

#
# Server-side
<reply>
<data1>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: ftp://%HOSTIP:%FTPPORT/10280002
Content-Length: 0
Connection: close

</data1>
<data2>
data
    to







|



|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</info>

#
# Server-side
<reply>
<data1>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002
Content-Length: 0
Connection: close

</data1>
<data2>
data
    to
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
http
ftp
</server>
 <name>
HTTP Location: redirect to FTP URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/10280001 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /10280001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 10280002
RETR 10280002
QUIT
</protocol>
<stdout>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: ftp://%HOSTIP:%FTPPORT/10280002
Content-Length: 0
Connection: close

data
    to
      see
that FTP
works
  so does it?
</stdout>
</verify>
</testcase>







|







|









|
|




|



|












41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
http
ftp
</server>
 <name>
HTTP Location: redirect to FTP URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER0002
RETR %TESTNUMBER0002
QUIT
</protocol>
<stdout>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002
Content-Length: 0
Connection: close

data
    to
      see
that FTP
works
  so does it?
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1029.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10290002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: and 'redirect_url' check
 </name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/our/1029 -w '%{redirect_url} %{url} %{exitcode} %{errormsg}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1029 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10290002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10290002.txt?coolsite=yes http://%HOSTIP:%HTTPPORT/we/want/our/1029 0 
</stdout>
</verify>
</testcase>







|
















|






|







|




|



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: and 'redirect_url' check
 </name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER -w '%{redirect_url} %{url} %{exitcode} %{errormsg}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/%TESTNUMBER0002.txt?coolsite=yes http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER 0 
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test103.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP RETR PORT with CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/103 -P -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
PORT 127,0,0,1,0,0
TYPE I
SIZE 103
RETR 103
QUIT
</protocol>
</verify>
</testcase>







|


















|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP RETR PORT with CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER -P -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
PORT 127,0,0,1,0,0
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1030.
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
!SSPI
crypto
</features>
 <name>
HTTP PUT with --anyauth authorization (picking Digest)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1030 -T log/put1030 -u testuser:testpass --anyauth
</command>
<file name="log/put1030">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1030 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /1030 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1030", response="01cb59db1ddaac246b072d5f5f0716d9"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line







|

|










|










|

|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
!SSPI
crypto
</features>
 <name>
HTTP PUT with --anyauth authorization (picking Digest)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="01cb59db1ddaac246b072d5f5f0716d9"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
Changes to jni/curl/tests/data/test1031.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ?coolsite=yes/10310002.txt
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ?coolsite=yes/10310002.txt
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following to a query string
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/this/1031 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/this/1031 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/this/1031?coolsite=yes/10310002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|

|







|








|

|



|

















|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ?coolsite=yes/%TESTNUMBER0002.txt
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ?coolsite=yes/%TESTNUMBER0002.txt
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following to a query string
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/this/%TESTNUMBER -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/this/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/this/%TESTNUMBER?coolsite=yes/%TESTNUMBER0002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1032.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP HEAD with --range
 </name>
 <command>
--range 1-3 --head http://%HOSTIP:%HTTPPORT/1032
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /1032 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=1-3
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|








31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP HEAD with --range
 </name>
 <command>
--range 1-3 --head http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=1-3
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1033.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#
# Server-side
<reply>
<data>
HTTP/1.1 102 unexpected huh?!

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#
# Server-side
<reply>
<data>
HTTP/1.1 102 unexpected huh?!

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP GET with 102 response!
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1033
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1033 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP GET with 102 response!
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1034.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
HTTP over proxy with malformatted IDN host name
 </name>

# This host name contains an invalid UTF-8 byte sequence that can't be
# converted into an IDN name
<stdin>
url = "http://invalid-utf8-.local/page/1034"
</stdin>
 <command>
-K - -x %HOSTIP:%NOLISTENPORT
</command>
</client>

#







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
HTTP over proxy with malformatted IDN host name
 </name>

# This host name contains an invalid UTF-8 byte sequence that can't be
# converted into an IDN name
<stdin>
url = "http://invalid-utf8-.local/page/%TESTNUMBER"
</stdin>
 <command>
-K - -x %HOSTIP:%NOLISTENPORT
</command>
</client>

#
Changes to jni/curl/tests/data/test1035.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
HTTP over proxy with too long IDN host name
 </name>
 <command>
http://too-long-IDN-name-cürl-rüles-la-la-la-dee-da-flooby-nooby.local/page/1035 -x %HOSTIP:%NOLISTENPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
HTTP over proxy with too long IDN host name
 </name>
 <command>
http://too-long-IDN-name-cürl-rüles-la-la-la-dee-da-flooby-nooby.local/page/%TESTNUMBER -x %HOSTIP:%NOLISTENPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1036.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
ftp
</server>
 <name>
FTP download resume from end of file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1036 -C -
</command>
<file name="log/curl1036.out">
This is the start!!
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 1036
REST 20
RETR 1036
QUIT
</protocol>
<file name="log/curl1036.out">
This is the start!!
expected to be a file without the first part
but we emulate that
</file>
</verify>
</testcase>







|

|













|

|


|






27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
ftp
</server>
 <name>
FTP download resume from end of file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -C -
</command>
<file name="log/curl%TESTNUMBER.out">
This is the start!!
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
REST 20
RETR %TESTNUMBER
QUIT
</protocol>
<file name="log/curl%TESTNUMBER.out">
This is the start!!
expected to be a file without the first part
but we emulate that
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1037.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP download resume from end of empty file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1037 -C -
</command>
<file name="log/curl1037.out">
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 1037
RETR 1037
QUIT
</protocol>
</verify>
</testcase>







|

|












|
|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP download resume from end of empty file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -C -
</command>
<file name="log/curl%TESTNUMBER.out">
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1038.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PASV upload resume from end of file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1038 -T log/upload1038 -C -
</command>
<file name="log/upload1038">
this is the *****cr@p******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 1038
APPE 1038
QUIT
</protocol>
<upload>
cr@p******** that we're gonna upload

worx?
</upload>
</verify>
</testcase>







|

|














|
|









19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PASV upload resume from end of file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -C -
</command>
<file name="log/upload%TESTNUMBER">
this is the *****cr@p******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
APPE %TESTNUMBER
QUIT
</protocol>
<upload>
cr@p******** that we're gonna upload

worx?
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1039.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PASV upload resume from end of empty file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1039 -T log/upload1039 -C -
</command>
<file name="log/upload1039">
this is the *****cr@p******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 1039
STOR 1039
QUIT
</protocol>
<upload>
this is the *****cr@p******** that we're gonna upload

worx?
</upload>
</verify>
</testcase>







|

|














|
|









19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PASV upload resume from end of empty file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -C -
</command>
<file name="log/upload%TESTNUMBER">
this is the *****cr@p******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
this is the *****cr@p******** that we're gonna upload

worx?
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test104.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
ftp
</server>
 <name>
FTP --head to get file size only
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/104 --head
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
MDTM 104
TYPE I
SIZE 104
REST 0
QUIT
</protocol>
</verify>
</testcase>







|











|

|





17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
ftp
</server>
 <name>
FTP --head to get file size only
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER --head
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
MDTM %TESTNUMBER
TYPE I
SIZE %TESTNUMBER
REST 0
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1040.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<server>
http
</server>
 <name>
HTTP GET with resume from end of entirely-downloaded file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1040 -C -
</command>
<file name="log/curl1040.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1040 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=100-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

|
















|








43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<server>
http
</server>
 <name>
HTTP GET with resume from end of entirely-downloaded file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C -
</command>
<file name="log/curl%TESTNUMBER.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=100-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1041.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT with resume from end of already-uploaded file
 </name>
<file name="log/test1041.txt">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
 <command>
http://%HOSTIP:%HTTPPORT/1041 -Tlog/test1041.txt -C -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# curl doesn't do a HEAD request on the remote file so it has no idea whether
# it can skip part of the file or not.  Instead, it sends the entire file.
<protocol>
PUT /1041 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 0-99/100
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 100
Expect: 100-continue








|

















|












|








|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT with resume from end of already-uploaded file
 </name>
<file name="log/test%TESTNUMBER.txt">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -Tlog/test%TESTNUMBER.txt -C -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# curl doesn't do a HEAD request on the remote file so it has no idea whether
# it can skip part of the file or not.  Instead, it sends the entire file.
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 0-99/100
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 100
Expect: 100-continue

Changes to jni/curl/tests/data/test1042.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<server>
http
</server>
 <name>
HTTP GET beyond end of entirely-downloaded file, no server resume
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1042 -C 200
</command>
<file name="log/curl1042.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
<protocol>
GET /1042 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=200-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

|



















|








55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<server>
http
</server>
 <name>
HTTP GET beyond end of entirely-downloaded file, no server resume
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C 200
</command>
<file name="log/curl%TESTNUMBER.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=200-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1043.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<server>
http
</server>
 <name>
HTTP GET with resume from end of file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1043 -C -
</command>
<file name="log/curl1043.out">
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1043 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=40-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|

|










|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<server>
http
</server>
 <name>
HTTP GET with resume from end of file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C -
</command>
<file name="log/curl%TESTNUMBER.out">
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=40-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test1044.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
ftp
</server>
 <name>
FTP download large file info with -I
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/1044 -I
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM 1044
TYPE I
SIZE 1044
REST 0
QUIT
</protocol>
<stdout>
Last-Modified: Sat, 26 Jul 2008 10:26:59 GMT
Content-Length: 9999999999
Accept-ranges: bytes







|










|

|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
ftp
</server>
 <name>
FTP download large file info with -I
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/%TESTNUMBER -I
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM %TESTNUMBER
TYPE I
SIZE %TESTNUMBER
REST 0
QUIT
</protocol>
<stdout>
Last-Modified: Sat, 26 Jul 2008 10:26:59 GMT
Content-Length: 9999999999
Accept-ranges: bytes
Changes to jni/curl/tests/data/test1045.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP GET with numeric localhost --interface
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1045 --interface %CLIENTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1045 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP GET with numeric localhost --interface
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --interface %CLIENTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1046.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with numeric localhost --interface
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/1046" --interface ::1
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
perl -e "print 'Test requires default test client host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1046 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|











|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with numeric localhost --interface
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/%TESTNUMBER" --interface ::1
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
perl -e "print 'Test requires default test client host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1049.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
tftp
</server>
 <name>
TFTP retrieve with localhost --interface
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//1049 --interface %CLIENTIP
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /1049
</protocol>
</verify>
</testcase>







|












|



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
tftp
</server>
 <name>
TFTP retrieve with localhost --interface
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --interface %CLIENTIP
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test105.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
      see
that FTP
works
  so does it?
</data>
<servercmd>
REPLY EPSV 500 no such command
REPLY SIZE 500 no such command
</servercmd>
</reply>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP user+password in URL and ASCII transfer
 </name>
 <command>
ftp://userdude:passfellow@%HOSTIP:%FTPPORT/105 --use-ascii
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER userdude
PASS passfellow
PWD
EPSV
PASV
TYPE A
SIZE 105
RETR 105
QUIT
</protocol>
</verify>
</testcase>







<












|












<
|




15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

47
48
49
50
51
      see
that FTP
works
  so does it?
</data>
<servercmd>
REPLY EPSV 500 no such command

</servercmd>
</reply>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP user+password in URL and ASCII transfer
 </name>
 <command>
ftp://userdude:passfellow@%HOSTIP:%FTPPORT/%TESTNUMBER --use-ascii
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER userdude
PASS passfellow
PWD
EPSV
PASV
TYPE A

RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1051.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10510002.txt?coolsite=yes
Content-Length: 0
Connection: close

</data>
<data2>
HTTP/1.1 100 Continue

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51

If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.1 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10510002.txt?coolsite=yes
Content-Length: 0
Connection: close

HTTP/1.1 100 Continue

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT







|


















|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 0
Connection: close

</data>
<data2>
HTTP/1.1 100 Continue

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51

If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.1 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 0
Connection: close

HTTP/1.1 100 Continue

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<server>
http
</server>
 <name>
HTTP PUT with Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1051 -L -T log/test1051.txt
</command>
<file name="log/test1051.txt">
Weird
     file
         to
   upload
for
   testing
the







|

|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<server>
http
</server>
 <name>
HTTP PUT with Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -T log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

# The primary reason libcurl sends the data part twice in this test is that
# the test HTTP server is blocking until it has read the entire request,
# including the full request-body before it responds. So in this test the
# server says 301 and 100 _after_ the entire PUT body has been sent.

<protocol>
PUT /want/1051 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
PUT /want/data/10510002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird







|















|







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

# The primary reason libcurl sends the data part twice in this test is that
# the test HTTP server is blocking until it has read the entire request,
# including the full request-body before it responds. So in this test the
# server says 301 and 100 _after_ the entire PUT body has been sent.

<protocol>
PUT /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
PUT /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird
Changes to jni/curl/tests/data/test1052.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</info>
# Server-side
<reply>
<data>
HTTP/1.0 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10520002.txt?coolsite=yes
Content-Length: 0
Connection: close

</data>
<data2>
HTTP/1.0 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51

If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.0 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10520002.txt?coolsite=yes
Content-Length: 0
Connection: close

HTTP/1.0 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51







|
















|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</info>
# Server-side
<reply>
<data>
HTTP/1.0 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 0
Connection: close

</data>
<data2>
HTTP/1.0 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51

If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.0 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 0
Connection: close

HTTP/1.0 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<server>
http
</server>
 <name>
HTTP 1.0 PUT with Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1052 -0 -L -T log/test1052.txt
</command>
<file name="log/test1052.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>

# The primary reason libcurl sends the data part twice in this test is that
# the test HTTP server is blocking until it has read the entire request,
# including the full request-body before it responds. So in this test the
# server says 301 and 200 _after_ the entire PUT body has been sent.
<protocol>
PUT /want/1052 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
PUT /want/data/10520002.txt?coolsite=yes HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file







|

|




















|














|







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<server>
http
</server>
 <name>
HTTP 1.0 PUT with Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -0 -L -T log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>

# The primary reason libcurl sends the data part twice in this test is that
# the test HTTP server is blocking until it has read the entire request,
# including the full request-body before it responds. So in this test the
# server says 301 and 200 _after_ the entire PUT body has been sent.
<protocol>
PUT /want/%TESTNUMBER HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
PUT /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file
Changes to jni/curl/tests/data/test1053.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

# Server-side
<reply>
<data>
HTTP/1.1 307 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10530002.txt?coolsite=yes
Content-Length: 0
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11
Connection: close

blablabla

</data2>
<datacheck>
HTTP/1.1 307 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10530002.txt?coolsite=yes
Content-Length: 0
Connection: close

HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11
Connection: close

blablabla

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting from file with Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1053 -L -F name=daniel -F tool=curl -F file=@log/test1053.txt
</command>
# We create this file before the command is invoked!
<file name="log/test1053.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/1053 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 410
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"

curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test1053.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------9ef8d6205763--
POST /we/want/data/10530002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 410
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"

curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test1053.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------9ef8d6205763--
</protocol>
</verify>
</testcase>







|






|











|




|


















|


|












|















|







|















|










11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

# Server-side
<reply>
<data>
HTTP/1.1 307 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 0
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11
Connection: close

blablabla

</data2>
<datacheck>
HTTP/1.1 307 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 0
Connection: close

HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11
Connection: close

blablabla

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting from file with Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -L -F name=daniel -F tool=curl -F file=@log/test%TESTNUMBER.txt
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 410
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"

curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------9ef8d6205763--
POST /we/want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 410
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"

curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------9ef8d6205763--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1054.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Location: moo/testcase/10540002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 301 OK swsclose
Location: moo/testcase/10540002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST from file with 301 redirect and --post301
 </name>
<file name="log/test1054.txt">
field=data
</file>
 <command>
http://%HOSTIP:%HTTPPORT/blah/1054 -L -d @log/test1054.txt --post301
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/1054 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

field=dataPOST /blah/moo/testcase/10540002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

field=data
</protocol>
</verify>
</testcase>







|













|




















|



|







|






|










8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Location: moo/testcase/%TESTNUMBER0002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 301 OK swsclose
Location: moo/testcase/%TESTNUMBER0002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST from file with 301 redirect and --post301
 </name>
<file name="log/test%TESTNUMBER.txt">
field=data
</file>
 <command>
http://%HOSTIP:%HTTPPORT/blah/%TESTNUMBER -L -d @log/test%TESTNUMBER.txt --post301
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

field=dataPOST /blah/moo/testcase/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

field=data
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1055.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 307 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Location: ftp://%HOSTIP:%FTPPORT/1055
Content-Length: 0
Connection: close

</data>
</reply>

#
# Client-side
<client>
<server>
http
ftp
</server>
 <name>
HTTP PUT Location: redirect to FTP URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1055 -L -T log/test1055.txt
</command>
<file name="log/test1055.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1055 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR 1055
QUIT
</protocol>
<upload>
Weird
     file
         to
   upload







|


|

















|

|
















|




















|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 307 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Location: ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
Content-Length: 0
Connection: close

</data>
</reply>

#
# Client-side
<client>
<server>
http
ftp
</server>
 <name>
HTTP PUT Location: redirect to FTP URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -L -T log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
Weird
     file
         to
   upload
Changes to jni/curl/tests/data/test1056.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: http://[::1%259999]:%HTTP6PORT/moo/10560002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: http://[::1%259999]:%HTTP6PORT/moo/10560002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close








|













|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: http://[::1%259999]:%HTTP6PORT/moo/%TESTNUMBER0002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: http://[::1%259999]:%HTTP6PORT/moo/%TESTNUMBER0002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
http
http-ipv6
</server>
 <name>
HTTP follow redirect from IPv4 to IPv6 with scope
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/1056 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/1056 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /moo/10560002 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|




|







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
http
http-ipv6
</server>
 <name>
HTTP follow redirect from IPv4 to IPv6 with scope
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /moo/%TESTNUMBER0002 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1057.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP retrieve a byte-range relative to end of file
 </name>
 <command>
-r -12 ftp://%HOSTIP:%FTPPORT/1057
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 1057
REST 52
RETR 1057
ABOR
QUIT
</protocol>
</verify>
</testcase>







|











|

|





26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP retrieve a byte-range relative to end of file
 </name>
 <command>
-r -12 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
REST 52
RETR %TESTNUMBER
ABOR
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1058.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP range relative to end of file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1058 -r -101
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1058 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=-101
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|






|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP range relative to end of file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -r -101
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=-101
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test1059.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

</info>
#
# Server-side
<reply>
<connect>
HTTP/1.1 501 Method not implemented swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
Content-Length: 0

</connect>
</reply>

#
# Client-side
<client>
<features>
ftp
proxy
</features>
<server>
http
</server>
 <name>
HTTP CONNECT with proxytunnel to unsupported FTP URL
 </name>
 <command>
ftp://test-number:1059/wanted/page -p -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# The server doesn't implement CONNECT for ftp, so this must be a failure test
<errorcode>
56
</errorcode>
<protocol>
CONNECT test-number:1059 HTTP/1.1
Host: test-number:1059
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|




















|











|
|






10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

</info>
#
# Server-side
<reply>
<connect>
HTTP/1.1 501 Method not implemented swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close
Content-Length: 0

</connect>
</reply>

#
# Client-side
<client>
<features>
ftp
proxy
</features>
<server>
http
</server>
 <name>
HTTP CONNECT with proxytunnel to unsupported FTP URL
 </name>
 <command>
ftp://test-number:%TESTNUMBER/wanted/page -p -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# The server doesn't implement CONNECT for ftp, so this must be a failure test
<errorcode>
56
</errorcode>
<protocol>
CONNECT test-number:%TESTNUMBER HTTP/1.1
Host: test-number:%TESTNUMBER
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test106.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP GET with type=A style ASCII URL using %20 codes
 </name>
 <command>
"ftp://%HOSTIP:%FTPPORT//path%20with%20%20spaces//and%20things2/106;type=A"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD path with  spaces
CWD and things2
EPSV
TYPE A
SIZE 106
RETR 106
QUIT
</protocol>
</verify>
</testcase>







|














<
|




25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP GET with type=A style ASCII URL using %20 codes
 </name>
 <command>
"ftp://%HOSTIP:%FTPPORT//path%20with%20%20spaces//and%20things2/%TESTNUMBER;type=A"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD path with  spaces
CWD and things2
EPSV
TYPE A

RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1060.
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
And you should ignore this data. aaaaaaaaaaaaaaaa
end of 1 KB aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</connect>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
And you should ignore this data. aaaaaaaaaaaaaaaa
end of 1 KB aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</connect>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
Content-Length: 40000
X-tra-long-header: %repeat[16080 x a]%

HTTP/1.1 200 OK swsbounce
Server: no

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
Content-Length: 40000
X-tra-long-header: %repeat[16080 x a]%

HTTP/1.1 200 OK swsbounce
Server: no

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and data
 </name>
 <command>
http://test.remote.haxx.se.1060:8990/path/10600002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.haxx.se.1060:8990 HTTP/1.1
Host: test.remote.haxx.se.1060:8990
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.haxx.se.1060:8990 HTTP/1.1
Host: test.remote.haxx.se.1060:8990
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.1060:8990", response="e1fbed39c26f4efe284adc0e576ff638"
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/10600002 HTTP/1.1
Host: test.remote.haxx.se.1060:8990
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|
|



|
|
|



|
|






871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and data
 </name>
 <command>
http://test.remote.haxx.se.%TESTNUMBER:8990/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.%TESTNUMBER:8990", response="e1fbed39c26f4efe284adc0e576ff638"
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1061.
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
0

</connect>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
0

</connect>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
Transfer-Encoding: chunked
X-tra-long-header: %repeat[16080 x a]%

HTTP/1.1 200 OK swsbounce
Server: no

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
Transfer-Encoding: chunked
X-tra-long-header: %repeat[16080 x a]%

HTTP/1.1 200 OK swsbounce
Server: no

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and chunked data
 </name>
 <command>
http://test.remote.haxx.se.1061:8990/path/10610002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.haxx.se.1061:8990 HTTP/1.1
Host: test.remote.haxx.se.1061:8990
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.haxx.se.1061:8990 HTTP/1.1
Host: test.remote.haxx.se.1061:8990
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.1061:8990", response="4e23449fa93224834299e7282a70472c"
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/10610002 HTTP/1.1
Host: test.remote.haxx.se.1061:8990
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|
|



|
|
|



|
|






876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and chunked data
 </name>
 <command>
http://test.remote.haxx.se.%TESTNUMBER:8990/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.%TESTNUMBER:8990", response="4e23449fa93224834299e7282a70472c"
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1062.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP with excessively long server command response lines, boundary condition
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/1062
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 1062
RETR 1062
QUIT
</protocol>
</verify>
</testcase>







|












|
|




24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP with excessively long server command response lines, boundary condition
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1063.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</features>
 <name>
Invalid large X- range on a file://
 </name>
# This range value is 2**32+7, which will be truncated to the valid value 7
# if the large file support is not working correctly
 <command>
-r 4294967303- file://localhost%FILE_PWD/log/test1063.txt 
</command>
<file name="log/test1063.txt">
1234567890
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>







|

|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</features>
 <name>
Invalid large X- range on a file://
 </name>
# This range value is 2**32+7, which will be truncated to the valid value 7
# if the large file support is not working correctly
 <command>
-r 4294967303- file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 
</command>
<file name="log/test%TESTNUMBER.txt">
1234567890
1234567890
</file>
</client>

# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test1064.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<server>
http
</server>
 <name>
HTTP PUT twice
 </name>
 <command>
-H "Expect:" -T log/1064 http://%HOSTIP:%HTTPPORT/1064.upload1 -T log/1064 http://%HOSTIP:%HTTPPORT/10640002.upload2
</command>
<file name="log/1064">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1064.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 5

test
PUT /10640002.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 5

test
</protocol>







|

|







|






|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<server>
http
</server>
 <name>
HTTP PUT twice
 </name>
 <command>
-H "Expect:" -T log/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 -T log/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002.upload2
</command>
<file name="log/%TESTNUMBER">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 5

test
PUT /%TESTNUMBER0002.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 5

test
</protocol>
Changes to jni/curl/tests/data/test1065.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP PUT with one file but two URLs
 </name>
 <command>
-H "Expect:" -T log/1065 http://%HOSTIP:%HTTPPORT/1065.upload1 http://%HOSTIP:%HTTPPORT/10650002.url2
</command>
<file name="log/1065">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1065.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 5

test
GET /10650002.url2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 A OK







|

|







|






|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP PUT with one file but two URLs
 </name>
 <command>
-H "Expect:" -T log/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002.url2
</command>
<file name="log/%TESTNUMBER">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 5

test
GET /%TESTNUMBER0002.url2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 A OK
Changes to jni/curl/tests/data/test1066.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http
</server>
 <name>
HTTP --dump-header - with two URLs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1066 http://%HOSTIP:%HTTPPORT/want/10660001 --dump-header -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1066 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/10660001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 OK







|






|




|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http
</server>
 <name>
HTTP --dump-header - with two URLs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER0001 --dump-header -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 OK
Changes to jni/curl/tests/data/test1067.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75



76
77
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/10670002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/10670002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with auto-referer
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1067 -L --referer "firstone.html;auto"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1067 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Referer: firstone.html

GET /want/data/10670002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Referer: http://%HOSTIP:%HTTPPORT/want/1067

</protocol>



</verify>
</testcase>












|

|







|








|

|



|

















|






|





|



|


>
>
>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with auto-referer
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER --silent --location --referer "firstone.html;auto" --write-out "%{stderr}|%{referer}|"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Referer: firstone.html

GET /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Referer: http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER

</protocol>
<stderr nonewline="yes">
|http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER|
</stderr>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1068.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT from stdin
</name>
 <command>
http://%HOSTIP:%HTTPPORT/bzz/1068 -T -
</command>
<stdin>
more than one byte
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /bzz/1068 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

13







|
















|









|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT from stdin
</name>
 <command>
http://%HOSTIP:%HTTPPORT/bzz/%TESTNUMBER -T -
</command>
<stdin>
more than one byte
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /bzz/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

13
Changes to jni/curl/tests/data/test1069.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
http
</server>
<name>
HTTP 1.0 PUT from stdin with no content length
</name>
 <command>
http://%HOSTIP:%HTTPPORT/bzz/1069 -T - -0
</command>
<stdin>
this data can't be sent
</stdin>
</client>

# Verify data after the test has been "shot"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
http
</server>
<name>
HTTP 1.0 PUT from stdin with no content length
</name>
 <command>
http://%HOSTIP:%HTTPPORT/bzz/%TESTNUMBER -T - -0
</command>
<stdin>
this data can't be sent
</stdin>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test107.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<client>
<server>
ftp
</server>
 <name>
FTP PASV upload file
 </name>
<file name="log/test107.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/107 -T log/test107.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
    to
      see
that FTP
works
  so does it?
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR 107
QUIT
</protocol>
</verify>
</testcase>







|








|



















|




11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<client>
<server>
ftp
</server>
 <name>
FTP PASV upload file
 </name>
<file name="log/test%TESTNUMBER.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
    to
      see
that FTP
works
  so does it?
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1070.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP POST with server closing connection before (all) data is received
 </name>
 <command>
 -d @log/input1070 http://%HOSTIP:%HTTPPORT/1070 -H "Expect: 100-continue"
</command>
<file name="log/input1070">
This creates the named file with this content before the test case is run,
which is useful if the test case needs a file to act on. We create this file
rather large (larger than your typical TCP packet) so that not all of it can nor
will be sent in one go as that is kind of the point of this test!

Here's 2000 x 'O':
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /1070 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Expect: 100-continue
Content-Length: 2313
Content-Type: application/x-www-form-urlencoded

This creates 
</protocol>
</verify>
</testcase>







|

|














|











28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP POST with server closing connection before (all) data is received
 </name>
 <command>
 -d @log/input%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER -H "Expect: 100-continue"
</command>
<file name="log/input%TESTNUMBER">
This creates the named file with this content before the test case is run,
which is useful if the test case needs a file to act on. We create this file
rather large (larger than your typical TCP packet) so that not all of it can nor
will be sent in one go as that is kind of the point of this test!

Here's 2000 x 'O':
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Expect: 100-continue
Content-Length: 2313
Content-Type: application/x-www-form-urlencoded

This creates 
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1071.
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
!SSPI
crypto
</features>
 <name>
Downgraded HTTP PUT to HTTP 1.0 with authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1071 -T log/put1071 -u testuser:testpass --anyauth
</command>
<file name="log/put1071">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1071 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /1071 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1071", response="df4cef6b52a30e65d472dd848d2055a1"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85

This is data we upload with PUT
a second line
line three







|

|










|










|

|







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
!SSPI
crypto
</features>
 <name>
Downgraded HTTP PUT to HTTP 1.0 with authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /%TESTNUMBER HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="df4cef6b52a30e65d472dd848d2055a1"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85

This is data we upload with PUT
a second line
line three
Changes to jni/curl/tests/data/test1072.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<features>
crypto
</features>
 <name>
HTTP chunked PUT to HTTP 1.0 server with authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1072 -T - -u testuser:testpass --anyauth
</command>
<stdin>
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
25
</errorcode>
<protocol>
PUT /1072 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

7a







|















|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<features>
crypto
</features>
 <name>
HTTP chunked PUT to HTTP 1.0 server with authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T - -u testuser:testpass --anyauth
</command>
<stdin>
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
25
</errorcode>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

7a
Changes to jni/curl/tests/data/test1073.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

# Server-side
<reply>
<data>
HTTP/1.0 301 Redirect swsclose
Server: testcurl
Content-Type: text/plain
Location: /newlocation/10730002
Content-Length: 0
Connection: close

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP chunked PUT to HTTP 1.0 server with redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1073 -T - -L
</command>
<stdin>
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
25
</errorcode>
<protocol>
PUT /1073 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

7a







|















|















|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

# Server-side
<reply>
<data>
HTTP/1.0 301 Redirect swsclose
Server: testcurl
Content-Type: text/plain
Location: /newlocation/%TESTNUMBER0002
Content-Length: 0
Connection: close

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP chunked PUT to HTTP 1.0 server with redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T - -L
</command>
<stdin>
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
25
</errorcode>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

7a
Changes to jni/curl/tests/data/test1074.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP/1.0
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: Keep-Alive

surprise
</data>
<data1>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</data1>

<postcmd>
wait 1
</postcmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP downgrade to HTTP/1.0 on second request
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1074 http://%HOSTIP:%HTTPPORT/wantmore/10740001
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: Keep-Alive

surprise
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</stdout>

<protocol>
GET /want/1074 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /wantmore/10740001 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|







|



















|







|





|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP/1.0
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: Keep-Alive

surprise
</data>
<data1>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</data1>

<postcmd>
wait 1
</postcmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP downgrade to HTTP/1.0 on second request
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER http://%HOSTIP:%HTTPPORT/wantmore/%TESTNUMBER0001
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: Keep-Alive

surprise
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</stdout>

<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /wantmore/%TESTNUMBER0001 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1075.
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<server>
http
</server>
 <name>
HTTP PUT with --anyauth authorization (picking Basic)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1075 -T log/put1075 -u testuser:testpass --anyauth
</command>
<file name="log/put1075">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1075 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /1075 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue








|

|










|










|







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<server>
http
</server>
 <name>
HTTP PUT with --anyauth authorization (picking Basic)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

Changes to jni/curl/tests/data/test1076.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: moo.html&testcase=/10760002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: moo.html&testcase=/10760002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 302 redirect and --post302
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/1076 -L -d "moo" --post302
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/1076 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /blah/moo.html&testcase=/10760002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|






|










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 302 redirect and --post302
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/%TESTNUMBER -L -d "moo" --post302
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /blah/moo.html&testcase=/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1077.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</info>

#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 9
Funny-head: yesyes
Proxy-Connection: Keep-Alive

contents
</data>
<data2>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 9
Funny-head: yesyes
Proxy-Connection: Keep-Alive

contents







|










|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</info>

#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 9
Funny-head: yesyes
Proxy-Connection: Keep-Alive

contents
</data>
<data2>
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 9
Funny-head: yesyes
Proxy-Connection: Keep-Alive

contents
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
ftp
proxy
</features>
 <name>
FTP over HTTP proxy with downgrade to HTTP 1.0
 </name>
 <command>
-x %HOSTIP:%HTTPPORT ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1077 ftp://%HOSTIP:%HTTPPORT/we/want/that/page/10770002
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1077 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/10770002 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|







|





|








46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
ftp
proxy
</features>
 <name>
FTP over HTTP proxy with downgrade to HTTP 1.0
 </name>
 <command>
-x %HOSTIP:%HTTPPORT ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER0002
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER0002 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1078.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
HTTP/1.1 200 Mighty fine indeed
Server: test tunnel 2000

</connect>

<data nocheck="yes">
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
HTTP/1.1 200 Mighty fine indeed
Server: test tunnel 2000

</connect>

<data nocheck="yes">
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
http
http-proxy
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and downgrade GET to HTTP/1.0
 </name>
 <command>
--proxy1.0 %HOSTIP:%PROXYPORT -p http://%HOSTIP.1078:%HTTPPORT/we/want/that/page/1078 http://%HOSTIP.1078:%HTTPPORT/we/want/that/page/1078
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT %HOSTIP.1078:%HTTPPORT HTTP/1.0
Host: %HOSTIP.1078:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/1078 HTTP/1.1
Host: %HOSTIP.1078:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/that/page/1078 HTTP/1.0
Host: %HOSTIP.1078:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 Mighty fine indeed
Server: test tunnel 2000

HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents
</stdout>
</verify>
</testcase>







|










|
|





|
|



|
|









|








|










39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
http
http-proxy
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and downgrade GET to HTTP/1.0
 </name>
 <command>
--proxy1.0 %HOSTIP:%PROXYPORT -p http://%HOSTIP.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER http://%HOSTIP.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT %HOSTIP.%TESTNUMBER:%HTTPPORT HTTP/1.0
Host: %HOSTIP.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/that/page/%TESTNUMBER HTTP/1.0
Host: %HOSTIP.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 Mighty fine indeed
Server: test tunnel 2000

HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1079.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
!SSPI
crypto
</features>
 <name>
HTTP retry after closed connection and empty response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1079 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
52
</errorcode>
<protocol>
GET /1079 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1079 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1079", response="e340c7cdca0950462070f46ee139e9f7"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|

|






45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
!SSPI
crypto
</features>
 <name>
HTTP retry after closed connection and empty response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
52
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="e340c7cdca0950462070f46ee139e9f7"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test108.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP PORT upload with CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/CWD/STOR/RETR/108 -T log/upload108 -P -
</command>
<file name="log/upload108">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>







|

|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP PORT upload with CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/CWD/STOR/RETR/%TESTNUMBER -T log/upload%TESTNUMBER -P -
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
PASS ftp@example.com
PWD
CWD CWD
CWD STOR
CWD RETR
PORT 127,0,0,1,5,109
TYPE I
STOR 108
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>







|








41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
PASS ftp@example.com
PWD
CWD CWD
CWD STOR
CWD RETR
PORT 127,0,0,1,5,109
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1080.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10800002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: on two URLs 'redirect_url' check
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/1080 http://%HOSTIP:%HTTPPORT/we/want/our/1080 -w '%{redirect_url}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1080 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/our/1080 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10800002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10800002.txt?coolsite=yes
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10800002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10800002.txt?coolsite=yes
</stdout>
</verify>
</testcase>







|
















|






|




|







|




|

|




|



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: on two URLs 'redirect_url' check
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER -w '%{redirect_url}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/%TESTNUMBER0002.txt?coolsite=yes
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/%TESTNUMBER0002.txt?coolsite=yes
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1081.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10810099.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
</data>
<data2 nocheck="yes">
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 41

This second URL does not have a location
</data2>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP no Location: on second URL 'redirect_url' check
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/1081 http://%HOSTIP:%HTTPPORT/we/want/our/10810002 -w '%{redirect_url}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1081 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/our/10810002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10810099.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10810099.txt?coolsite=yes
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 41

This second URL does not have a location

</stdout>
</verify>
</testcase>







|







|
















|






|




|







|




|

|








9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0099.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
</data>
<data2 nocheck="yes">
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 41

This second URL does not have a location
</data2>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP no Location: on second URL 'redirect_url' check
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER0002 -w '%{redirect_url}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/our/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0099.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/%TESTNUMBER0099.txt?coolsite=yes
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 41

This second URL does not have a location

</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1082.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP GET with localhost --interface
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1082 -4 --interface localhost
</command>
<precheck>
perl -e "print 'Test requires default test client host address' if ( '%CLIENTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1082 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|










|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP GET with localhost --interface
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -4 --interface localhost
</command>
<precheck>
perl -e "print 'Test requires default test client host address' if ( '%CLIENTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1083.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with ip6-localhost --interface
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/1083" --interface ip6-localhost
</command>
<precheck>
perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test client host address';} else {exec './server/resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1083 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|










|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with ip6-localhost --interface
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/%TESTNUMBER" --interface ip6-localhost
</command>
<precheck>
perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test client host address';} else {exec './server/resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1084.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
none
</server>
 <name>
HTTP GET with invalid --interface
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/1084 --interface non-existing-host.haxx.se.
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
none
</server>
 <name>
HTTP GET with invalid --interface
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER --interface non-existing-host.haxx.se.
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1085.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
none
</server>
 <name>
HTTP-IPv6 GET with invalid --interface
 </name>
 <command>
-g "http://%HOST6IP:%NOLISTENPORT/1085" --interface non-existing-host.haxx.se.
</command>
# Ensure the IPv6 stack is operational before running this test (other tests
# use the startup of the IPv6 test server as a substitute check for this).
<precheck>
./server/resolve --ipv6 ::1
</precheck>
</client>







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
none
</server>
 <name>
HTTP-IPv6 GET with invalid --interface
 </name>
 <command>
-g "http://%HOST6IP:%NOLISTENPORT/%TESTNUMBER" --interface non-existing-host.haxx.se.
</command>
# Ensure the IPv6 stack is operational before running this test (other tests
# use the startup of the IPv6 test server as a substitute check for this).
<precheck>
./server/resolve --ipv6 ::1
</precheck>
</client>
Changes to jni/curl/tests/data/test1086.
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<killserver>
ftp
</killserver>
 <name>
FTP download with strict timeout and slow data transfer
 </name>
 <command timeout="1">
ftp://%HOSTIP:%FTPPORT/1086 -m 7
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 28 is CURLE_OPERATION_TIMEDOUT
<errorcode>
28
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 1086
RETR 1086
</protocol>
</verify>
</testcase>







|















|
|



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<killserver>
ftp
</killserver>
 <name>
FTP download with strict timeout and slow data transfer
 </name>
 <command timeout="1">
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -m 7
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 28 is CURLE_OPERATION_TIMEDOUT
<errorcode>
28
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1087.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

</data1000>
<data1001 nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/10871002
Content-Length: 0
Connection: close

</data1001>
<data1002 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</data1002>

<datacheck>
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/10871002
Content-Length: 0
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/10871000 -x %HOSTIP:%HTTPPORT --user iam:myself --location --anyauth
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/10871000 HTTP/1.1
Host: first.host.it.is
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://first.host.it.is/we/want/that/page/10871000 HTTP/1.1
Host: first.host.it.is
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/10871002 HTTP/1.1
Host: goto.second.host.now
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|



|






|















|



|




|



















|










|





|






|








18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

</data1000>
<data1001 nocheck="yes">
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER1002
Content-Length: 0
Connection: close

</data1001>
<data1002 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</data1002>

<datacheck>
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER1002
Content-Length: 0
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/%TESTNUMBER1000 -x %HOSTIP:%HTTPPORT --user iam:myself --location --anyauth
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/%TESTNUMBER1000 HTTP/1.1
Host: first.host.it.is
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://first.host.it.is/we/want/that/page/%TESTNUMBER1000 HTTP/1.1
Host: first.host.it.is
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/%TESTNUMBER1002 HTTP/1.1
Host: goto.second.host.now
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1088.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

</data1000>
<data1001 nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/10881002
Content-Length: 0
Connection: close

</data1001>
<data1003 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</data1003>

<datacheck>
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/10881002
Content-Length: 0
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/10881000 -x %HOSTIP:%HTTPPORT --user iam:myself --location-trusted --anyauth
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/10881000 HTTP/1.1
Host: first.host.it.is
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://first.host.it.is/we/want/that/page/10881000 HTTP/1.1
Host: first.host.it.is
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/10881002 HTTP/1.1
Host: goto.second.host.now
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|



|






|















|



|




|



















|










|





|






|









19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

</data1000>
<data1001 nocheck="yes">
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER1002
Content-Length: 0
Connection: close

</data1001>
<data1003 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</data1003>

<datacheck>
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic
Content-Type: text/plain
Content-Length: 0

HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER1002
Content-Length: 0
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/plain
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/%TESTNUMBER1000 -x %HOSTIP:%HTTPPORT --user iam:myself --location-trusted --anyauth
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/%TESTNUMBER1000 HTTP/1.1
Host: first.host.it.is
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://first.host.it.is/we/want/that/page/%TESTNUMBER1000 HTTP/1.1
Host: first.host.it.is
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/%TESTNUMBER1002 HTTP/1.1
Host: goto.second.host.now
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1089.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./10890001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --write-out with redirected fetch
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1089 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1089 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /10890001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./10890001

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
2
1
15
http://%HOSTIP:%HTTPPORT/10890001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>







|



|





|



















|







|




|








|



|


|








|






9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./%TESTNUMBER0001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --write-out with redirected fetch
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./%TESTNUMBER0001

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
2
1
15
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test109.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP PASV upload append
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/109 -T log/upload109 --append
</command>
<file name="log/upload109">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
APPE 109
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>







|

|













|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP PASV upload append
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/upload%TESTNUMBER --append
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
APPE %TESTNUMBER
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
Changes to jni/curl/tests/data/test1090.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./10900001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Transfer-Encoding: chunked
Connection: close
Content-Type: text/plain; charset=us-ascii

0007
bigger 
0008







|



|





|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./%TESTNUMBER0001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Transfer-Encoding: chunked
Connection: close
Content-Type: text/plain; charset=us-ascii

0007
bigger 
0008
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<server>
http
</server>
 <name>
HTTP GET --write-out with redirected fetch and chunked reply
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1090 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1090 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /10900001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./10900001

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Transfer-Encoding: chunked
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
2
1
15
http://%HOSTIP:%HTTPPORT/10900001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>







|







|




|








|



|


|








|






46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<server>
http
</server>
 <name>
HTTP GET --write-out with redirected fetch and chunked reply
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./%TESTNUMBER0001

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Transfer-Encoding: chunked
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
2
1
15
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1091.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP URL with type=i
 </name>
 <command>
"ftp://%HOSTIP:%FTPPORT/%2ftmp/moo/1091;type=i" --use-ascii
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD tmp
CWD moo
EPSV
TYPE I
SIZE 1091
RETR 1091
QUIT
</protocol>
</verify>
</testcase>







|














|
|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP URL with type=i
 </name>
 <command>
"ftp://%HOSTIP:%FTPPORT/%2ftmp/moo/%TESTNUMBER;type=i" --use-ascii
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD tmp
CWD moo
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1092.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

contents
</data>
</reply>







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

contents
</data>
</reply>
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
ftp
proxy
</features>
 <name>
FTP with type=i over HTTP proxy
 </name>
 <command>
"ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1092;type=i" --use-ascii -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1092;type=i HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|







|








32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
ftp
proxy
</features>
 <name>
FTP with type=i over HTTP proxy
 </name>
 <command>
"ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER;type=i" --use-ascii -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER;type=i HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1093.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
tftp
</server>
 <name>
TFTP retrieve with mode=i
 </name>
 <command>
"tftp://%HOSTIP:%TFTPPORT//1093;mode=i" --use-ascii
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /1093
</protocol>
</verify>
</testcase>







|












|



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
tftp
</server>
 <name>
TFTP retrieve with mode=i
 </name>
 <command>
"tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER;mode=i" --use-ascii
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1094.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
tftp
</server>
 <name>
TFTP retrieve with mode=netascii
 </name>
 <command>
"tftp://%HOSTIP:%TFTPPORT//1094;mode=netascii"
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: netascii
tsize: 0
blksize: 512
timeout: 6
filename: /1094
</protocol>
</verify>
</testcase>







|












|



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
tftp
</server>
 <name>
TFTP retrieve with mode=netascii
 </name>
 <command>
"tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER;mode=netascii"
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: netascii
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1095.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest and realm with quoted quotes
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1095 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1095 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1095 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/1095", response="a1c7931ece9e8617bae2715045e4f49f"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest and realm with quoted quotes
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/%TESTNUMBER", response="a1c7931ece9e8617bae2715045e4f49f"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1096.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
Two FTP downloads, with failed RETR but re-used control connection
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/dir/1096 ftp://%HOSTIP:%FTPPORT/dir/1096
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
78
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD dir
EPSV
TYPE I
SIZE 1096
RETR 1096
EPSV
SIZE 1096
RETR 1096
QUIT
</protocol>
</verify>
</testcase>







|















|
|

|
|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
Two FTP downloads, with failed RETR but re-used control connection
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/dir/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/dir/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
78
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD dir
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1097.
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
!SSPI
proxy
</features>
 <name>
HTTP POST using CONNECT with --proxy-ntlm but no auth is required
 </name>
 <command>
http://test.a.galaxy.far.far.away.1097:%HTTPPORT/1097 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -d "dummy=value" -p
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
CONNECT test.a.galaxy.far.far.away.1097:%HTTPPORT HTTP/1.1
Host: test.a.galaxy.far.far.away.1097:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

POST /1097 HTTP/1.1
Host: test.a.galaxy.far.far.away.1097:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

dummy=value
</protocol>







|






|
|




|
|







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
!SSPI
proxy
</features>
 <name>
HTTP POST using CONNECT with --proxy-ntlm but no auth is required
 </name>
 <command>
http://test.a.galaxy.far.far.away.%TESTNUMBER:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -d "dummy=value" -p
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
CONNECT test.a.galaxy.far.far.away.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.a.galaxy.far.far.away.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

POST /%TESTNUMBER HTTP/1.1
Host: test.a.galaxy.far.far.away.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

dummy=value
</protocol>
Changes to jni/curl/tests/data/test1098.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6

hello
</data>

</reply>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6

hello
</data>

</reply>

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
proxy
</features>
 <name>
FTP RETR twice over proxy confirming persistent connection
 </name>

 <command>
ftp://ftp-site/moo/1098 ftp://ftp-site/moo/1098 --proxy http://%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://ftp-site/moo/1098 HTTP/1.1
Host: ftp-site:21
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET ftp://ftp-site/moo/1098 HTTP/1.1
Host: ftp-site:21
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6

hello
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6

hello
</stdout>
</verify>
</testcase>







|







|





|








|




|






32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
proxy
</features>
 <name>
FTP RETR twice over proxy confirming persistent connection
 </name>

 <command>
ftp://ftp-site/moo/%TESTNUMBER ftp://ftp-site/moo/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://ftp-site/moo/%TESTNUMBER HTTP/1.1
Host: ftp-site:21
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET ftp://ftp-site/moo/%TESTNUMBER HTTP/1.1
Host: ftp-site:21
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6

hello
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6

hello
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1099.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
TFTP
TFTP RRQ
FAILURE
</keywords>
</info>

<reply>
<data nocheck="yes">
data for 1099
</data>
</reply>

#
# Client-side
<client>
<server>
tftp
</server>
 <name>
TFTP get first a non-existing file then an existing
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT/an/invalid-file tftp://%HOSTIP:%TFTPPORT//1099
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: an/invalid-file
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /1099
</protocol>
<stdout>
data for 1099
</stdout>
</verify>
</testcase>











|













|


















|


|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
TFTP
TFTP RRQ
FAILURE
</keywords>
</info>

<reply>
<data nocheck="yes">
data for %TESTNUMBER
</data>
</reply>

#
# Client-side
<client>
<server>
tftp
</server>
 <name>
TFTP get first a non-existing file then an existing
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT/an/invalid-file tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: an/invalid-file
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
<stdout>
data for %TESTNUMBER
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test11.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/110002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/110002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/11 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/11 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/110002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|

|







|








|

|



|

















|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP Location: following
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test110.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP download resume with set limit
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/110 -C 20
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 110
REST 20
RETR 110
QUIT
</protocol>
</verify>
</testcase>







|












|

|




26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP download resume with set limit
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -C 20
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
REST 20
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1100.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /1100
Content-Length: 34

This is not the real page either!
</data1002>

<datacheck>
HTTP/1.1 401 Now gimme that second request of crap
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /1100
Content-Length: 34

HTTP/1.1 200 Thanks for this! swsclose
Content-Length: 25

This is the final page !
</datacheck>







|















|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /%TESTNUMBER
Content-Length: 34

This is not the real page either!
</data1002>

<datacheck>
HTTP/1.1 401 Now gimme that second request of crap
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /%TESTNUMBER
Content-Length: 34

HTTP/1.1 200 Thanks for this! swsclose
Content-Length: 25

This is the final page !
</datacheck>
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/1100 -u testuser:testpass --ntlm -L -d "stuff to send away" 
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
POST /1100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /1100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 18
Content-Type: application/x-www-form-urlencoded

stuff to send awayGET /1100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|








|







|







|







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -L -d "stuff to send away" 
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 18
Content-Type: application/x-www-form-urlencoded

stuff to send awayGET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1101.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP Basic auth
NO_PROXY
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

boo
</data>
</reply>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP Basic auth
NO_PROXY
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

boo
</data>
</reply>
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 </name>

<setenv>
no_proxy=%HOSTIP
http_proxy=http://non-existing-host.haxx.se:3128/
</setenv>
 <command>
http://user:secret@%HOSTIP:%HTTPPORT/gimme/1101
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /gimme/1101 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|








30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 </name>

<setenv>
no_proxy=%HOSTIP
http_proxy=http://non-existing-host.haxx.se:3128/
</setenv>
 <command>
http://user:secret@%HOSTIP:%HTTPPORT/gimme/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /gimme/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1102.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP OS/400 server name format check
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1102
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
SYST
SITE NAMEFMT 1
PWD
EPSV
TYPE I
SIZE 1102
RETR 1102
QUIT
</protocol>
</verify>
</testcase>







|














|
|




24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP OS/400 server name format check
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
SYST
SITE NAMEFMT 1
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1103.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP non-OS/400 server
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1103
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
SYST
EPSV
TYPE I
SIZE 1103
RETR 1103
QUIT
</protocol>
</verify>
</testcase>







|












|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP non-OS/400 server
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
SYST
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1104.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 Moved
Date: Thu, 09 Nov 2010 14:49:00 GMT
Location: /want/data/11040002
Server: test-server/fake
Set-Cookie: test=true; domain=127.0.0.1; path=/; expires=Thu Jan  1 00:00:00 GMT 1970;
Set-Cookie: test2=true; domain=127.0.0.1; path=/; expires=Fri Feb 13 11:56:27 GMT 2037;
Connection: close

This server reply is for testing a set-cookie

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 Moved
Date: Thu, 09 Nov 2010 14:49:00 GMT
Location: /want/data/11040002
Server: test-server/fake
Set-Cookie: test=true; domain=127.0.0.1; path=/; expires=Thu Jan  1 00:00:00 GMT 1970;
Set-Cookie: test2=true; domain=127.0.0.1; path=/; expires=Fri Feb 13 11:56:27 GMT 2037;
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP cookie expiry date at Jan 1 00:00:00 GMT 1970
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1104 -L -x %HOSTIP:%HTTPPORT -c log/cookies1104.jar
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/1104 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/want/data/11040002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: test2=true

</protocol>
</verify>
</testcase>







|
|










|








|
|






|

















|









|





|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 Moved
Date: Tue, 09 Nov 2010 14:49:00 GMT
Location: /want/data/%TESTNUMBER0002
Server: test-server/fake
Set-Cookie: test=true; domain=127.0.0.1; path=/; expires=Thu Jan  1 00:00:00 GMT 1970;
Set-Cookie: test2=true; domain=127.0.0.1; path=/; expires=Fri Feb 13 11:56:27 GMT 2037;
Connection: close

This server reply is for testing a set-cookie

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 Moved
Date: Tue, 09 Nov 2010 14:49:00 GMT
Location: /want/data/%TESTNUMBER0002
Server: test-server/fake
Set-Cookie: test=true; domain=127.0.0.1; path=/; expires=Thu Jan  1 00:00:00 GMT 1970;
Set-Cookie: test2=true; domain=127.0.0.1; path=/; expires=Fri Feb 13 11:56:27 GMT 2037;
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP cookie expiry date at Jan 1 00:00:00 GMT 1970
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -x %HOSTIP:%HTTPPORT -c log/cookies%TESTNUMBER.jar
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/want/data/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: test2=true

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1105.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name;
Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/;

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie parser and header recording
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT/we/want/1105?parm1=this*that/other/thing&parm2=foobar/1105" -c log/cookie1105.txt -d "userid=myname&password=mypassword"
</command>
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /we/want/1105?parm1=this*that/other/thing&parm2=foobar/1105 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 33
Content-Type: application/x-www-form-urlencoded

userid=myname&password=mypassword
</protocol>
<file name="log/cookie1105.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	"/silly/"	FALSE	0	mismatch	this
127.0.0.1	FALSE	/we/want/	FALSE	0	foobar	name
</file>
</verify>
</testcase>







|



















|









|








|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name;
Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/;

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie parser and header recording
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER?parm1=this*that/other/thing&parm2=foobar/%TESTNUMBER" -c log/cookie%TESTNUMBER.txt -d "userid=myname&password=mypassword"
</command>
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /we/want/%TESTNUMBER?parm1=this*that/other/thing&parm2=foobar/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 33
Content-Type: application/x-www-form-urlencoded

userid=myname&password=mypassword
</protocol>
<file name="log/cookie%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	"/silly/"	FALSE	0	mismatch	this
127.0.0.1	FALSE	/we/want/	FALSE	0	foobar	name
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1106.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
FTP
CURLOPT_PORT
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 6

hello
</data>
</reply>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
FTP
CURLOPT_PORT
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 6

hello
</data>
</reply>
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
FTP URL and with ftp_proxy environment variable set
 </name>

<setenv>
ftp_proxy=http://%HOSTIP:%HTTPPORT/
</setenv>
 <command>
ftp://%HOSTIP:23456/1106
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:23456/1106 HTTP/1.1
Host: %HOSTIP:23456
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|







|








33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
FTP URL and with ftp_proxy environment variable set
 </name>

<setenv>
ftp_proxy=http://%HOSTIP:%HTTPPORT/
</setenv>
 <command>
ftp://%HOSTIP:23456/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:23456/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:23456
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1107.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP RETR PASV with PRET
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1107 --ftp-pret
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
PRET RETR 1107
EPSV
TYPE I
SIZE 1107
RETR 1107
QUIT
</protocol>
</verify>
</testcase>







|










|


|
|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP RETR PASV with PRET
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --ftp-pret
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
PRET RETR %TESTNUMBER
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1108.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP RETR PASV with PRET not supported
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1108 --ftp-pret
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
PRET RETR 1108
</protocol>
# we expect that the server doesn't understand PRET
<errorcode>
84
</errorcode>
</verify>
</testcase>







|










|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP RETR PASV with PRET not supported
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --ftp-pret
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
PRET RETR %TESTNUMBER
</protocol>
# we expect that the server doesn't understand PRET
<errorcode>
84
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1109.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with URL that contains fragment after the path
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1109#test
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1109 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with URL that contains fragment after the path
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER#test
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test111.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP download resume beyond file size
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/111 -C 2000
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
36
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 111
QUIT
</protocol>
</verify>
</testcase>







|














|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP download resume beyond file size
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -C 2000
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
36
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1110.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with URL that contains a fragment after the query part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1110?q=foobar#fragment
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1110?q=foobar HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with URL that contains a fragment after the query part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER?q=foobar#fragment
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER?q=foobar HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1111.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with URL whose fragment contains a # (which is illegal)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1111?q=foobar#fragment#fragment2
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1111?q=foobar HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with URL whose fragment contains a # (which is illegal)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER?q=foobar#fragment#fragment2
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER?q=foobar HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1112.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<killserver>
ftps
</killserver>
 <name>
FTPS download with strict timeout and slow data transfer
 </name>
 <command timeout="1">
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/1112 -m 16
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 28 is CURLE_OPERATION_TIMEDOUT
<errorcode>
28
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
EPSV
TYPE I
SIZE 1112
RETR 1112
</protocol>
</verify>
</testcase>







|

















|
|



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<killserver>
ftps
</killserver>
 <name>
FTPS download with strict timeout and slow data transfer
 </name>
 <command timeout="1">
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/%TESTNUMBER -m 16
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 28 is CURLE_OPERATION_TIMEDOUT
<errorcode>
28
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1115.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP GET with unexpected 1xx response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1115
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1115 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP GET with unexpected 1xx response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1116.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
http
</server>
 <name>
HTTP GET with chunked trailer without Trailer:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1116 -D log/heads1116
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1116 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads1116">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Connection: mooo

chunky-trailer: header data
another-header: yes







|







|





|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
http
</server>
 <name>
HTTP GET with chunked trailer without Trailer:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -D log/heads%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads%TESTNUMBER">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Connection: mooo

chunky-trailer: header data
another-header: yes
Changes to jni/curl/tests/data/test1117.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<testcase>
<info>
<keywords>
HTTP
HTTP GET
Range
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 416 Requested Range Not Satisfiable
Date: Thu, 09 Sep 2010 14:49:00 GMT
Accept-Ranges: bytes
Content-Length: 115

This is a long error message that is large enough that the test server is
guaranteed to split it into two packets.
</data>

<data1>
HTTP/1.1 206 Partial Content
Date: Thu, 09 Sep 2010 14:49:01 GMT
Accept-Ranges: bytes
Content-Range: bytes 10-18/155
Content-Length: 13
Content-Type: text/plain

partial body
</data1>













|









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<testcase>
<info>
<keywords>
HTTP
HTTP GET
Range
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 416 Requested Range Not Satisfiable
Date: Tue, 09 Sep 2010 14:49:00 GMT
Accept-Ranges: bytes
Content-Length: 115

This is a long error message that is large enough that the test server is
guaranteed to split it into two packets.
</data>

<data1>
HTTP/1.1 206 Partial Content
Date: Tue, 09 Sep 2010 14:49:01 GMT
Accept-Ranges: bytes
Content-Range: bytes 10-18/155
Content-Length: 13
Content-Type: text/plain

partial body
</data1>
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<server>
http
</server>
 <name>
HTTP with invalid range then another URL
 </name>
 <command>
-r 10-22 http://%HOSTIP:%HTTPPORT/want/1117 http://%HOSTIP:%HTTPPORT/wantmore/11170001
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 416 Requested Range Not Satisfiable
Date: Thu, 09 Sep 2010 14:49:00 GMT
Accept-Ranges: bytes
Content-Length: 115

This is a long error message that is large enough that the test server is
guaranteed to split it into two packets.
HTTP/1.1 206 Partial Content
Date: Thu, 09 Sep 2010 14:49:01 GMT
Accept-Ranges: bytes
Content-Range: bytes 10-18/155
Content-Length: 13
Content-Type: text/plain

partial body
</stdout>

<protocol>
GET /want/1117 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=10-22
User-Agent: curl/%VERSION
Accept: */*

GET /wantmore/11170001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=10-22
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|






|









|





|








40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<server>
http
</server>
 <name>
HTTP with invalid range then another URL
 </name>
 <command>
-r 10-22 http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER http://%HOSTIP:%HTTPPORT/wantmore/%TESTNUMBER0001
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 416 Requested Range Not Satisfiable
Date: Tue, 09 Sep 2010 14:49:00 GMT
Accept-Ranges: bytes
Content-Length: 115

This is a long error message that is large enough that the test server is
guaranteed to split it into two packets.
HTTP/1.1 206 Partial Content
Date: Tue, 09 Sep 2010 14:49:01 GMT
Accept-Ranges: bytes
Content-Range: bytes 10-18/155
Content-Length: 13
Content-Type: text/plain

partial body
</stdout>

<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=10-22
User-Agent: curl/%VERSION
Accept: */*

GET /wantmore/%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=10-22
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1118.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
URL without slash and @-letter in query
 </name>
 <command>
http://%HOSTIP:%HTTPPORT?email=name@example.com/1118
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?email=name@example.com/1118 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
URL without slash and @-letter in query
 </name>
 <command>
http://%HOSTIP:%HTTPPORT?email=name@example.com/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?email=name@example.com/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test112.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP PASV upload resume
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/112 -T log/upload112 -C 40
</command>
<file name="log/upload112">
this is the *****crap******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
APPE 112
QUIT
</protocol>
<upload>
 gonna upload

worx?
</upload>
</verify>
</testcase>







|

|














|









16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP PASV upload resume
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -C 40
</command>
<file name="log/upload%TESTNUMBER">
this is the *****crap******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
APPE %TESTNUMBER
QUIT
</protocol>
<upload>
 gonna upload

worx?
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1120.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP with 421 timeout response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/1120
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<protocol>







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP with 421 timeout response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<protocol>
Changes to jni/curl/tests/data/test1121.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP multiple provided Host: headers
 </name>
 <command>
-H "Host: host1" -H "Host: host2" -H "Host: host3" http://%HOSTIP:%HTTPPORT/1121
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1121 HTTP/1.1
Host: host1
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP multiple provided Host: headers
 </name>
 <command>
-H "Host: host1" -H "Host: host2" -H "Host: host3" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: host1
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1122.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET gzip transfer-encoded content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1122 --tr-encoding
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1122 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>







|







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET gzip transfer-encoded content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --tr-encoding
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>
Changes to jni/curl/tests/data/test1123.
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<server>
http
</server>
 <name>
HTTP GET deflate transfer-encoded content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1123 --tr-encoding
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1123 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>







|







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<server>
http
</server>
 <name>
HTTP GET deflate transfer-encoded content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --tr-encoding
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>
Changes to jni/curl/tests/data/test1124.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP GET gzip+chunked transfer-encoded content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1124 --tr-encoding
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1124 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>







|







|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP GET gzip+chunked transfer-encoded content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --tr-encoding
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>
Changes to jni/curl/tests/data/test1125.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET transfer-encoding with custom Connection:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1125 --tr-encoding -H "Connection: close"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1125 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: close, TE
TE: gzip

</protocol>







|







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET transfer-encoding with custom Connection:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --tr-encoding -H "Connection: close"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: close, TE
TE: gzip

</protocol>
Changes to jni/curl/tests/data/test1126.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
If-Modified-Since
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2003 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 200 If-Modified-Since with newer document
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1126 -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1126 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>













|



















|







|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
If-Modified-Since
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2003 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 200 If-Modified-Since with newer document
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1127.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
HTTP
HTTP GET
If-Modified-Since
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 200 If-Modified-Since with older document
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1127 -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1127 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>













|









|


















|







|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
HTTP
HTTP GET
If-Modified-Since
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 200 If-Modified-Since with older document
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1128.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<testcase>
<info>
<keywords>
HTTP
HTTP GET
If-Modified-Since
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:01 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2002 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 200 If-Modified-Since with old+new documents
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1128 http://%HOSTIP:%HTTPPORT/11280001 -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1128 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

GET /11280001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:01 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2002 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</stdout>
</verify>
</testcase>













|









|



















|







|





|









|






|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<testcase>
<info>
<keywords>
HTTP
HTTP GET
If-Modified-Since
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:01 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2002 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 200 If-Modified-Since with old+new documents
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:01 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2002 12:10:00 GMT
Content-Length: 11
Content-Type: text/html

0123456789
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1129.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 404 NOOOOOOOOO
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data>

<data1>
HTTP/1.1 404 NEITHER
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data1>

# we use skip to make the test server never read the full payload off
# the socket and instead return the response at once 
<servercmd>
skip: 1053700
</servercmd>
</reply>

#
# Client-side
<client>
# 1053700 x 'x'
<file name="log/file1129">
%repeat[1053700 x x]%
</file>
<server>
http
</server>
 <name>
HTTP POST expect 100-continue with a 404
 </name>
 <command option="no-output">
-d @log/file1129 http://%HOSTIP:%HTTPPORT/1129 http://%HOSTIP:%HTTPPORT/11290001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 404 NOOOOOOOOO
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
HTTP/1.1 404 NEITHER
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</stdout>
<protocol>
POST /1129 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1053700
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

POST /11290001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1053700
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

</protocol>
</verify>
</testcase>







|









|


















|









|








|






|







|







|










8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 404 NOOOOOOOOO
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data>

<data1>
HTTP/1.1 404 NEITHER
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data1>

# we use skip to make the test server never read the full payload off
# the socket and instead return the response at once 
<servercmd>
skip: 1053700
</servercmd>
</reply>

#
# Client-side
<client>
# 1053700 x 'x'
<file name="log/file%TESTNUMBER">
%repeat[1053700 x x]%
</file>
<server>
http
</server>
 <name>
HTTP POST expect 100-continue with a 404
 </name>
 <command option="no-output">
-d @log/file%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 404 NOOOOOOOOO
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
HTTP/1.1 404 NEITHER
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</stdout>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1053700
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

POST /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1053700
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test113.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download, failed login: USER not valid
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/113
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
67







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download, failed login: USER not valid
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
67
Changes to jni/curl/tests/data/test1130.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 404 NOOOOOOOOO
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data>

<data1>
HTTP/1.1 404 NEITHER
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data1>

# we use skip to make the test server never read the full payload off
# the socket and instead return the response at once 
<servercmd>
skip: 100
</servercmd>
</reply>

#
# Client-side
<client>
# 100 x 'x'
<file name="log/file1130">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</file>
<server>
http
</server>
 <name>
HTTP POST forced expect 100-continue with a 404
 </name>
 <command option="no-output">
-d @log/file1130 http://%HOSTIP:%HTTPPORT/1130 http://%HOSTIP:%HTTPPORT/11300001 -H "Expect: 100-continue"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 404 NOOOOOOOOO
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
HTTP/1.1 404 NEITHER
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</stdout>
<protocol>
POST /1130 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Expect: 100-continue
Content-Length: 100
Content-Type: application/x-www-form-urlencoded

POST /11300001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Expect: 100-continue
Content-Length: 100
Content-Type: application/x-www-form-urlencoded

</protocol>
</verify>
</testcase>







|









|


















|









|








|






|







|







|










8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 404 NOOOOOOOOO
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data>

<data1>
HTTP/1.1 404 NEITHER
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</data1>

# we use skip to make the test server never read the full payload off
# the socket and instead return the response at once 
<servercmd>
skip: 100
</servercmd>
</reply>

#
# Client-side
<client>
# 100 x 'x'
<file name="log/file%TESTNUMBER">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</file>
<server>
http
</server>
 <name>
HTTP POST forced expect 100-continue with a 404
 </name>
 <command option="no-output">
-d @log/file%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -H "Expect: 100-continue"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 404 NOOOOOOOOO
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
HTTP/1.1 404 NEITHER
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Content-Type: text/html

-foo-
</stdout>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Expect: 100-continue
Content-Length: 100
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Expect: 100-continue
Content-Length: 100
Content-Type: application/x-www-form-urlencoded

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1131.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 400 NOOOOOOOOO
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE1
</data>

<data1>
HTTP/1.1 400 NEITHER
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE2
</data1>

# we use skip to make the test server never read the full payload off
# the socket and instead return the response at once 
<servercmd>
skip: 100
</servercmd>
</reply>

#
# Client-side
<client>
# 100 x 'x'
<file name="log/file1131">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</file>
<server>
http
</server>
 <name>
HTTP PUT expect 100-continue with a 400
 </name>
 <command option="no-output">
-T log/file1131 http://%HOSTIP:%HTTPPORT/1131 -T log/file1131 http://%HOSTIP:%HTTPPORT/11310001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 400 NOOOOOOOOO
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE1
HTTP/1.1 400 NEITHER
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE2
</stdout>
<protocol>
PUT /1131 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 100
Expect: 100-continue

PUT /11310001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 100
Expect: 100-continue

</protocol>
</verify>
</testcase>







|









|


















|









|








|






|







|






|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 400 NOOOOOOOOO
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE1
</data>

<data1>
HTTP/1.1 400 NEITHER
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE2
</data1>

# we use skip to make the test server never read the full payload off
# the socket and instead return the response at once 
<servercmd>
skip: 100
</servercmd>
</reply>

#
# Client-side
<client>
# 100 x 'x'
<file name="log/file%TESTNUMBER">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</file>
<server>
http
</server>
 <name>
HTTP PUT expect 100-continue with a 400
 </name>
 <command option="no-output">
-T log/file%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/file%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 400 NOOOOOOOOO
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE1
HTTP/1.1 400 NEITHER
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9
Content-Type: text/html

FAILURE2
</stdout>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 100
Expect: 100-continue

PUT /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 100
Expect: 100-continue

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1133.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with filename/data contains ',', ';', '"'
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1133 -F "file=@\"log/test1133,and;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/test1133,and;.txt"' -F 'file3=@"log/test1133,and;.txt";type=m/f,"log/test1133,and;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b'
</command>
# We create this file before the command is invoked!
<file name="log/test1133,and;.txt">
foo bar
This is a bar foo
bar
foo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|Content-Type: multipart/mixed; boundary=|-------).*
</strip>
<protocol>
POST /we/want/1133 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1264
Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32

------------------------------24e78000bd32
Content-Disposition: form-data; name="file"; filename="faker,and;.txt"
Content-Type: mo/foo

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file2"; filename="test1133,and;.txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file3"
Content-Type: multipart/mixed; boundary=----------------------------7f0e85a48b0b

Content-Disposition: attachment; filename="test1133,and;.txt"
Content-Type: m/f

foo bar
This is a bar foo
bar
foo

Content-Disposition: attachment; filename="test1133,and;.txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo












|
















|


|













|
















|











|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with filename/data contains ',', ';', '"'
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F "file=@\"log/test%TESTNUMBER,and;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/test%TESTNUMBER,and;.txt"' -F 'file3=@"log/test%TESTNUMBER,and;.txt";type=m/f,"log/test%TESTNUMBER,and;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b'
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER,and;.txt">
foo bar
This is a bar foo
bar
foo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|Content-Type: multipart/mixed; boundary=|-------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1264
Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32

------------------------------24e78000bd32
Content-Disposition: form-data; name="file"; filename="faker,and;.txt"
Content-Type: mo/foo

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file2"; filename="test%TESTNUMBER,and;.txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file3"
Content-Type: multipart/mixed; boundary=----------------------------7f0e85a48b0b

Content-Disposition: attachment; filename="test%TESTNUMBER,and;.txt"
Content-Type: m/f

foo bar
This is a bar foo
bar
foo

Content-Disposition: attachment; filename="test%TESTNUMBER,and;.txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo

Changes to jni/curl/tests/data/test1134.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Server-side
<reply>
<servercmd>
connection-monitor
</servercmd>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents1
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents2
</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP connection re-use with different credentials
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1134 -u user1:password1 --next http://%HOSTIP:%HTTPPORT/11340001 -u 2user:password2
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1134 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjE6cGFzc3dvcmQx
User-Agent: curl/%VERSION
Accept: */*

GET /11340001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic MnVzZXI6cGFzc3dvcmQy
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|






|
















|







|





|









10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Server-side
<reply>
<servercmd>
connection-monitor
</servercmd>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents1
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents2
</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP connection re-use with different credentials
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u user1:password1 --next http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -u 2user:password2
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjE6cGFzc3dvcmQx
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic MnVzZXI6cGFzc3dvcmQy
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1136.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test1=forbidden1; domain=example.ck; path=/;
Set-Cookie: test2=allowed2; domain=www.example.ck; path=/;
Set-Cookie: test3=forbidden3; domain=ck; path=/;







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test1=forbidden1; domain=example.ck; path=/;
Set-Cookie: test2=allowed2; domain=www.example.ck; path=/;
Set-Cookie: test3=forbidden3; domain=ck; path=/;
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<name>
Check cookies against PSL
</name>
<setenv>
TZ=GMT
</setenv>
<command>
http://www.example.ck/1136 http://www.ck/1136 http://z-1.compute-1.amazonaws.com/1136 -b none -c log/jar1136.txt -x %HOSTIP:%HTTPPORT
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<file name="log/jar1136.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.z-1.compute-1.amazonaws.com	TRUE	/	FALSE	0	test5	forbidden5
.www.ck	TRUE	/	FALSE	0	test4	allowed4
.www.example.ck	TRUE	/	FALSE	0	test2	allowed2
</file>
</verify>
</testcase>







|






|










41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<name>
Check cookies against PSL
</name>
<setenv>
TZ=GMT
</setenv>
<command>
http://www.example.ck/%TESTNUMBER http://www.ck/%TESTNUMBER http://z-1.compute-1.amazonaws.com/%TESTNUMBER -b none -c log/jar%TESTNUMBER.txt -x %HOSTIP:%HTTPPORT
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<file name="log/jar%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.z-1.compute-1.amazonaws.com	TRUE	/	FALSE	0	test5	forbidden5
.www.ck	TRUE	/	FALSE	0	test4	allowed4
.www.example.ck	TRUE	/	FALSE	0	test2	allowed2
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1137.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP RETR --ignore-content-length
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1137 --ignore-content-length
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
RETR 1137
QUIT
</protocol>
</verify>
</testcase>







|













|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP RETR --ignore-content-length
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --ignore-content-length
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1138.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/?name=آغاز-سم-زدایی-از-بازار-پول&testcase=/11380002    
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/?name=آغاز-سم-زدایی-از-بازار-پول&testcase=/11380002    
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with UTF-8 characters
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/1138 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/1138 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/moo.html/?name=%d8%a2%d8%ba%d8%a7%d8%b2-%d8%b3%d9%85-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a7%d8%b2-%d8%a8%d8%a7%d8%b2%d8%a7%d8%b1-%d9%be%d9%88%d9%84&testcase=/11380002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/?name=آغاز-سم-زدایی-از-بازار-پول&testcase=/%TESTNUMBER0002    
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/?name=آغاز-سم-زدایی-از-بازار-پول&testcase=/%TESTNUMBER0002    
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with UTF-8 characters
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/moo.html/?name=%d8%a2%d8%ba%d8%a7%d8%b2-%d8%b3%d9%85-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a7%d8%b2-%d8%a8%d8%a7%d8%b2%d8%a7%d8%b1-%d9%be%d9%88%d9%84&testcase=/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test114.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download, failed login: PASS not valid
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/114
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
67







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download, failed login: PASS not valid
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
67
Changes to jni/curl/tests/data/test1141.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:///foo.example.com/want/11410001

This server reply is for testing
</data>
<data1>
HTTP/1.1 200 hello
Connection: close
Content-Length: 4

hej
</data1>
<datacheck>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:///foo.example.com/want/11410001

HTTP/1.1 200 hello
Connection: close
Content-Length: 4

hej
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect to http:/// (three slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/1141 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/1141 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://foo.example.com/want/11410001 HTTP/1.1
Host: foo.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|













|


















|









|





|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:///foo.example.com/want/%TESTNUMBER0001

This server reply is for testing
</data>
<data1>
HTTP/1.1 200 hello
Connection: close
Content-Length: 4

hej
</data1>
<datacheck>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:///foo.example.com/want/%TESTNUMBER0001

HTTP/1.1 200 hello
Connection: close
Content-Length: 4

hej
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect to http:/// (three slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://foo.example.com/want/%TESTNUMBER0001 HTTP/1.1
Host: foo.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1142.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:////foo.example.com/want/11420001

This server reply is for testing
</data>
<data1>
HTTP/1.1 200 hello
Connection: close
Content-Length: 4

hej
</data1>
<datacheck>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:////foo.example.com/want/11420001

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect to http://// (four slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/1142 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/1142 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
# 3, CURLE_URL_MALFORMAT for the four slashes







|













|













|









|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:////foo.example.com/want/%TESTNUMBER0001

This server reply is for testing
</data>
<data1>
HTTP/1.1 200 hello
Connection: close
Content-Length: 4

hej
</data1>
<datacheck>
HTTP/1.1 302 This is a weirdo text message
Connection: close
Location: http:////foo.example.com/want/%TESTNUMBER0001

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect to http://// (four slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
# 3, CURLE_URL_MALFORMAT for the four slashes
Changes to jni/curl/tests/data/test1143.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
http
</server>
 <name>
HTTP URL with http:/ (one slash!)
 </name>
 <command>
http:/%HOSTIP:%HTTPPORT/want/1143
</command>
<setenv>
# Needed for MSYS2 to not treat the argument as a POSIX path list
# that has to be converted to Windows paths
MSYS2_ARG_CONV_EXCL=http:/
</setenv>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1143 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|











|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
http
</server>
 <name>
HTTP URL with http:/ (one slash!)
 </name>
 <command>
http:/%HOSTIP:%HTTPPORT/want/%TESTNUMBER
</command>
<setenv>
# Needed for MSYS2 to not treat the argument as a POSIX path list
# that has to be converted to Windows paths
MSYS2_ARG_CONV_EXCL=http:/
</setenv>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1144.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP HEAD, receive no headers only body
 </name>
 <command>
-I http://%HOSTIP:%HTTPPORT/1144 --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /1144 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
8







|







|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP HEAD, receive no headers only body
 </name>
 <command>
-I http://%HOSTIP:%HTTPPORT/%TESTNUMBER --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
8
Changes to jni/curl/tests/data/test1145.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</server>
<name>
file:// bad host
</name>
# This command should not succeed since we only accept
# file:/// file://localhost/ file://127.0.0.1/
<command>
file://bad-host%PWD/log/test1145.txt
</command>
<file name="log/test1145.txt">
foo
   bar
bar
   foo
moo
</file>
</client>







|

|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</server>
<name>
file:// bad host
</name>
# This command should not succeed since we only accept
# file:/// file://localhost/ file://127.0.0.1/
<command>
file://bad-host%PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>
Changes to jni/curl/tests/data/test1146.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
file
</server>
<name>
--proto-default file
</name>
<command option="no-include">
--proto-default file %PWD/log/test1146.txt
</command>
<file name="log/test1146.txt">
foo
   bar
bar
   foo
moo
</file>
</client>







|

|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
file
</server>
<name>
--proto-default file
</name>
<command option="no-include">
--proto-default file %PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>
Changes to jni/curl/tests/data/test1147.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<client>
<server>
http
</server>
 <name>
Get -H headers from a file
 </name>
<file name="log/heads1147.txt">
One: 1
Two: 2
no-colon

 And A Funny One : wohoo
User-Agent:
</file>
 <command>
http://%HOSTIP:%HTTPPORT/1147 -H @log/heads1147.txt
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1147 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
One: 1
Two: 2
 And A Funny One : wohoo

</protocol>
</verify>
</testcase>







|








|







|









31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<client>
<server>
http
</server>
 <name>
Get -H headers from a file
 </name>
<file name="log/heads%TESTNUMBER.txt">
One: 1
Two: 2
no-colon

 And A Funny One : wohoo
User-Agent:
</file>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -H @log/heads%TESTNUMBER.txt
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
One: 1
Two: 2
 And A Funny One : wohoo

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1148.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
progressbar
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 60
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
progressbar
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 60
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
progress-bar
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1148 -# --stderr log/stderrlog1148
</command>
<setenv>
LC_ALL=
LC_NUMERIC=en_US.UTF-8
</setenv>
</client>

#
<verify>
<protocol>
GET /1148 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# Check that the progress finished at 100% and has the right bar width.
# Note the dot in 100.0% is regex to match any character since different
# locales use different separators.
<file name="log/stderrlog1148" mode="text">
correct
</file>
<stripfile>
s/.*\r#{72} 100.0%/correct/
</stripfile>

</verify>
</testcase>







|










|









|








31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
progress-bar
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -# --stderr log/stderrlog%TESTNUMBER
</command>
<setenv>
LC_ALL=
LC_NUMERIC=en_US.UTF-8
</setenv>
</client>

#
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# Check that the progress finished at 100% and has the right bar width.
# Note the dot in 100.0% is regex to match any character since different
# locales use different separators.
<file name="log/stderrlog%TESTNUMBER" mode="text">
correct
</file>
<stripfile>
s/.*\r#{72} 100.0%/correct/
</stripfile>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1149.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
ftp
</server>
 <name>
FTP dir list multicwd then again nocwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/list/this/path/1149/ --ftp-method multicwd --next ftp://%HOSTIP:%FTPPORT/list/this/path/1149/ --ftp-method nocwd
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD list
CWD this
CWD path
CWD 1149
EPSV
TYPE A
LIST
CWD /
EPSV
LIST list/this/path/1149
QUIT
</protocol>
</verify>
</testcase>







|













|





|




33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
ftp
</server>
 <name>
FTP dir list multicwd then again nocwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/list/this/path/%TESTNUMBER/ --ftp-method multicwd --next ftp://%HOSTIP:%FTPPORT/list/this/path/%TESTNUMBER/ --ftp-method nocwd
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD list
CWD this
CWD path
CWD %TESTNUMBER
EPSV
TYPE A
LIST
CWD /
EPSV
LIST list/this/path/%TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test115.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP download, failed PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/115
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
13







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP download, failed PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
13
Changes to jni/curl/tests/data/test1150.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</info>
# Server-side
<reply>

# this is returned when we get a GET!
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Content-Type: text/html
Funny-head: yesyes

daniel
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP proxy with URLs using different ports
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.example.com.1150:150/path http://test.remote.example.com.1150:1234/path/
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.example.com.1150:150/path HTTP/1.1
Host: test.remote.example.com.1150:150
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com.1150:1234/path/ HTTP/1.1
Host: test.remote.example.com.1150:1234
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|

















|









|
|




|
|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</info>
# Server-side
<reply>

# this is returned when we get a GET!
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Content-Type: text/html
Funny-head: yesyes

daniel
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP proxy with URLs using different ports
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.example.com.%TESTNUMBER:150/path http://test.remote.example.com.%TESTNUMBER:1234/path/
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.example.com.%TESTNUMBER:150/path HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:150
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com.%TESTNUMBER:1234/path/ HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:1234
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1151.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# reject cookies with too long name (instead of capping)
# 3000 bytes name + 1096 bytes content is fine
# 3000 bytes name + 1097 bytes content is NOT OK
# 4096 bytes name + 1 byte content is NOT OK
# 4094 bytes name + 1 byte content is fine
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; domain=127.0.0.1; path=/;
Set-Cookie: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB; domain=127.0.0.1; path=/;
Set-Cookie: CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB; domain=127.0.0.1; path=/;
Set-Cookie: DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD=E; domain=127.0.0.1; path=/;
Set-Cookie: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF=E; domain=127.0.0.1; path=/;
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with too long cookies
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1151 -c log/cookies1151.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1151 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies1151.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	/	FALSE	0	FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF	E
127.0.0.1	FALSE	/	FALSE	0	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA	BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
127.0.0.1	FALSE	/	FALSE	0	foobar	name
</file>
</verify>
</testcase>







|




















|






|





|










13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# reject cookies with too long name (instead of capping)
# 3000 bytes name + 1096 bytes content is fine
# 3000 bytes name + 1097 bytes content is NOT OK
# 4096 bytes name + 1 byte content is NOT OK
# 4094 bytes name + 1 byte content is fine
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; domain=127.0.0.1; path=/;
Set-Cookie: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB; domain=127.0.0.1; path=/;
Set-Cookie: CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB; domain=127.0.0.1; path=/;
Set-Cookie: DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD=E; domain=127.0.0.1; path=/;
Set-Cookie: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF=E; domain=127.0.0.1; path=/;
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with too long cookies
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -c log/cookies%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	/	FALSE	0	FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF	E
127.0.0.1	FALSE	/	FALSE	0	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA	BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
127.0.0.1	FALSE	/	FALSE	0	foobar	name
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1152.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
ftp
</server>
 <name>
FTP with uneven quote in PWD response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/test-1152/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD test-1152
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>







|










|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
ftp
</server>
 <name>
FTP with uneven quote in PWD response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/test-%TESTNUMBER/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD test-%TESTNUMBER
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1153.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
ftp
</server>
 <name>
FTP with quoted double quotes
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/test-1153/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD test-1153
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>







|










|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
ftp
</server>
 <name>
FTP with quoted double quotes
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/test-%TESTNUMBER/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD test-%TESTNUMBER
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1154.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Long: %repeat[102400 x A]%

-foo-
</data>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Long: %repeat[102400 x A]%

-foo-
</data>
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET with 100K (too long) response header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1154
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1154 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 27 == CURLE_OUT_OF_MEMORY
<errorcode>
27
</errorcode>
</verify>
</testcase>







|







|











29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET with 100K (too long) response header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 27 == CURLE_OUT_OF_MEMORY
<errorcode>
27
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1155.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0
Set-Cookie: domain=value;path=/

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP cookie with parameter word as name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1155 -c log/cookies1155.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1155 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies1155.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	/	FALSE	0	domain	value
</file>
</verify>
</testcase>







|















|






|





|




|



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0
Set-Cookie: domain=value;path=/

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP cookie with parameter word as name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -c log/cookies%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

%HOSTIP	FALSE	/	FALSE	0	domain	value
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1156.
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

68
69
70
71

# Client-side
<client>
<server>
http
</server>
<tool>
lib1156
</tool>
 <name>
HTTP resume/range fail range-error content-range combinations
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1156
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>

0
</errorcode>
</verify>
</testcase>







|





|





|
>

|


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP resume/range fail range-error content-range combinations
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stderr mode="text">
URL: http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER
0
</stderr>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1157.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<client>
<server>
http
</server>
 <name>
Get -H headers from empty file
 </name>
<file name="log/heads1157.txt">
</file>
 <command>
http://%HOSTIP:%HTTPPORT/1157 -H @log/heads1157.txt
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1157 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|


|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<client>
<server>
http
</server>
 <name>
Get -H headers from empty file
 </name>
<file name="log/heads%TESTNUMBER.txt">
</file>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -H @log/heads%TESTNUMBER.txt
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1158.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP RFC1867-type formposting with filename containing '"'
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/1158 -F "file=@\"log/test1158\\\".txt\";type=mo/foo;filename=\"test1158\\\".txt\"" -F 'file2=@"log/test1158\".txt"' -F 'file3=@"log/test1158\".txt";type=m/f,"log/test1158\".txt"'
</command>
<precheck>
perl -e "print 'Test requires a system supporting double quotes in file names' if ($^O eq 'msys');"
</precheck>
# We create this file before the command is invoked!
<file name=log/test1158".txt>
foo bar
This is a bar foo
bar
foo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|Content-Type: multipart/mixed; boundary=|-------).*
</strip>
<protocol>
POST /we/want/1158 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 954
Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32

------------------------------24e78000bd32
Content-Disposition: form-data; name="file"; filename="test1158\".txt"
Content-Type: mo/foo

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file2"; filename="test1158\".txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file3"
Content-Type: multipart/mixed; boundary=----------------------------7f0e85a48b0b

Content-Disposition: attachment; filename="test1158\".txt"
Content-Type: m/f

foo bar
This is a bar foo
bar
foo

Content-Disposition: attachment; filename="test1158\".txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo


------------------------------24e78000bd32--
</protocol>
</verify>
</testcase>











|
















|





|













|







|








|











|







|












1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP RFC1867-type formposting with filename containing '"'
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F "file=@\"log/test%TESTNUMBER\\\".txt\";type=mo/foo;filename=\"test%TESTNUMBER\\\".txt\"" -F 'file2=@"log/test%TESTNUMBER\".txt"' -F 'file3=@"log/test%TESTNUMBER\".txt";type=m/f,"log/test%TESTNUMBER\".txt"'
</command>
<precheck>
perl -e "print 'Test requires a system supporting double quotes in file names' if ($^O eq 'msys');"
</precheck>
# We create this file before the command is invoked!
<file name=log/test%TESTNUMBER".txt>
foo bar
This is a bar foo
bar
foo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|Content-Type: multipart/mixed; boundary=|-------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 954
Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32

------------------------------24e78000bd32
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER\".txt"
Content-Type: mo/foo

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file2"; filename="test%TESTNUMBER\".txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file3"
Content-Type: multipart/mixed; boundary=----------------------------7f0e85a48b0b

Content-Disposition: attachment; filename="test%TESTNUMBER\".txt"
Content-Type: m/f

foo bar
This is a bar foo
bar
foo

Content-Disposition: attachment; filename="test%TESTNUMBER\".txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo


------------------------------24e78000bd32--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1159.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
HTTP Location: and 'redirect_url' with non-supported scheme
 </name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/our/1159 -w '%{redirect_url}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1159 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose







|






|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
HTTP Location: and 'redirect_url' with non-supported scheme
 </name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER -w '%{redirect_url}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Changes to jni/curl/tests/data/test116.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<features>
ipv6
</features>
 <name>
FTP download, failed PORT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/116 -P 1.2.3.4
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
30







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<features>
ipv6
</features>
 <name>
FTP download, failed PORT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P 1.2.3.4
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
30
Changes to jni/curl/tests/data/test1160.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0
Set-Cookie:             =         ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz󠁖zzzzzzzzzzzz~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with long funny format cookie
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1160 -c log/cookies1160.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1160 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies1160.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

</file>
</verify>
</testcase>







|















|






|





|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0
Set-Cookie:             =         ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz󠁖zzzzzzzzzzzz~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with long funny format cookie
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -c log/cookies%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1161.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0
Set-Cookie: ckyPersistent=permanent;path=;path=/

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP cookie with path set twice
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1161 -c log/cookies1161.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1161 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies1161.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	/	FALSE	0	ckyPersistent	permanent
</file>
</verify>
</testcase>







|















|






|





|




|



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0
Set-Cookie: ckyPersistent=permanent;path=;path=/

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP cookie with path set twice
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -c log/cookies%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/cookies%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

%HOSTIP	FALSE	/	FALSE	0	ckyPersistent	permanent
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1164.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
HTTP/0.9 GET and all zeroes
 </name>
 <command option="force-output">
http://%HOSTIP:%HTTPPORT/1164 -w '%{size_download}\n' --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1164 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout mode="text">
208







|







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
HTTP/0.9 GET and all zeroes
 </name>
 <command option="force-output">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w '%{size_download}\n' --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout mode="text">
208
Changes to jni/curl/tests/data/test1166.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: trackyou=want; path=/
Content-Length: 68

This server reply is for testing a Location: following with cookies
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP response with cookies but not receiving!
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1166 http://%HOSTIP:%HTTPPORT/want/1166
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1166 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/1166 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

















|






|




|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: trackyou=want; path=/
Content-Length: 68

This server reply is for testing a Location: following with cookies
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP response with cookies but not receiving!
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1168.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /data/11680002.txt
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /data/11680002.txt
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with credentials using # in user and password
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1168 -L -u "catmai#d:#DZaRJYrixKE*gFY"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/1168 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic Y2F0bWFpI2Q6I0RaYVJKWXJpeEtFKmdGWQ==
User-Agent: curl/%VERSION
Accept: */*

GET /data/11680002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic Y2F0bWFpI2Q6I0RaYVJKWXJpeEtFKmdGWQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|

|







|








|

|



|

















|






|





|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /data/%TESTNUMBER0002.txt
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /data/%TESTNUMBER0002.txt
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with credentials using # in user and password
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -u "catmai#d:#DZaRJYrixKE*gFY"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic Y2F0bWFpI2Q6I0RaYVJKWXJpeEtFKmdGWQ==
User-Agent: curl/%VERSION
Accept: */*

GET /data/%TESTNUMBER0002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic Y2F0bWFpI2Q6I0RaYVJKWXJpeEtFKmdGWQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test1169.






































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<testcase>
<info>
<keywords>
runtests.pl
</keywords>
</info>

#
# Client-side
<client>
<server>
none
</server>
<name>
Verify that runtests.pl accepts an -L option
</name>

<command type="perl">
%SRCDIR/runtests.pl -L %SRCDIR/log/test1196-library.pl
</command>
# Create a simple perl snippet that lets runtests.pl
# exit with a code we can check.
<precheck>
echo 'exit 123' > %SRCDIR/log/test1196-library.pl
</precheck>

</client>

<verify>
<errorcode>
123
</errorcode>
</verify>

</testcase>
Changes to jni/curl/tests/data/test117.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP download, failed TYPE
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/117
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
17







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP download, failed TYPE
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
17
Changes to jni/curl/tests/data/test1170.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET transfer-encoding with removed Connection:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1170 --tr-encoding -H "Connection:"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1170 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>







|







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET transfer-encoding with removed Connection:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --tr-encoding -H "Connection:"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>
Changes to jni/curl/tests/data/test1171.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET transfer-encoding with blanked Connection:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1171 --tr-encoding -H "Connection;"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1171 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>







|







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET transfer-encoding with blanked Connection:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --tr-encoding -H "Connection;"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: TE
TE: gzip

</protocol>
Changes to jni/curl/tests/data/test1172.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP/0.9 GET response denied
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1172 --no-http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1172 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# unsupported protocol
<errorcode>







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP/0.9 GET response denied
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --no-http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# unsupported protocol
<errorcode>
Changes to jni/curl/tests/data/test1174.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP/0.9 GET response denied by default
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1174
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1174 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# unsupported protocol
<errorcode>







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP/0.9 GET response denied by default
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# unsupported protocol
<errorcode>
Changes to jni/curl/tests/data/test1176.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
globbing
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
globbing
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET
 </name>
 <command option="no-output">
http://%HOSTIP:%HTTPPORT/1176 -o 'log/base-#0'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1176 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/base-#0">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</file>
</verify>
</testcase>







|







|







|













30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP GET
 </name>
 <command option="no-output">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o 'log/base-#0'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/base-#0">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1178.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP proxy auth with credentials longer than 256 bytes
 </name>
# 400 x 'A' : 600 x 'B' ...
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/1178 -x http://%HOSTIP:%HTTPPORT -U AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/1178 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>













|


















|










|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP proxy auth with credentials longer than 256 bytes
 </name>
# 400 x 'A' : 600 x 'B' ...
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER -x http://%HOSTIP:%HTTPPORT -U AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1179.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
manual
</features>
<name>
error when using unknown command line option
</name>
<command>
--never-implemented http://never.use.this.example.com/1179
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
manual
</features>
<name>
error when using unknown command line option
</name>
<command>
--never-implemented http://never.use.this.example.com/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test118.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP download, failed RETR
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/118
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
19
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 118
RETR 118
QUIT
</protocol>
</verify>
</testcase>







|















|
|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP download, failed RETR
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
19
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1180.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<features>
proxy
</features>
 <name>
HTTP GET request with proxy and -H "Proxy-Connection: keep-alive"
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT -H "Proxy-Connection: Keep-Alive" http://%HOSTIP:%HTTPPORT/1180
</command>
</client>

<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1180 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>







|





|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<features>
proxy
</features>
 <name>
HTTP GET request with proxy and -H "Proxy-Connection: keep-alive"
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT -H "Proxy-Connection: Keep-Alive" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
Changes to jni/curl/tests/data/test1181.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<features>
proxy
</features>
 <name>
HTTP GET request with proxy and --proxy-header "Proxy-Connection: Keep-Alive"
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT --proxy-header "Proxy-Connection: Keep-Alive" http://%HOSTIP:%HTTPPORT/1181
</command>
</client>

<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1181 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>







|





|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<features>
proxy
</features>
 <name>
HTTP GET request with proxy and --proxy-header "Proxy-Connection: Keep-Alive"
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT --proxy-header "Proxy-Connection: Keep-Alive" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
Added jni/curl/tests/data/test1182.








































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<testcase>
<info>
<keywords>
runtests.pl
</keywords>
</info>

#
# Client-side
<client>
<server>
none
</server>
<name>
Verify that runtests.pl accepts an exclude file with the -E option
</name>

<command type="perl">
%SRCDIR/runtests.pl -o TESTDIR=%SRCDIR/log/data -o LOGDIR=%SRCDIR/log/log -E %SRCDIR/log/test%TESTNUMBER-exclude-file 1
</command>
<precheck>
mkdir %SRCDIR/log/data ; mkdir %SRCDIR/log/log; cp %SRCDIR/data/test1 %SRCDIR/log/data; echo 'test:1:Test should not run for unit test %TESTNUMBER' > %SRCDIR/log/test%TESTNUMBER-exclude-file
</precheck>
<postcheck>
grep -q "Test should not run for unit test %TESTNUMBER" %SRCDIR/log/stdout%TESTNUMBER
</postcheck>

</client>

<verify>
<errorcode>
1
</errorcode>
</verify>

</testcase>
Added jni/curl/tests/data/test1183.
































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Server: Blafasel/5.0
Date: Sat, 16 Jan 2021 14:48:30 GMT
Content-Length: 12

Bla bla bla
</data>

</reply>

# Client-side
<client>
<server>
http
</server>
<features>
proxy
</features>
 <name>
%TESTNUMBER used instead of actual test number
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify that the %TESTNUMBER has been resolved to %TESTNUMBER
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1188.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37





38
39
40
41
42
43
44

45




46
47
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--write-out
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Content-Length: 3
Connection: close

hi
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
--write-out with %{onerror} and %{urlnum} to stderr
 </name>
<command>
http://%HOSTIP:%NOLISTENPORT/we/want/our/1188 http://%HOSTIP:%HTTPPORT/we/want/our/1188 -w '%{onerror}%{stderr}%{urlnum} says %{exitcode} %{errormsg}\n' -s
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1188 HTTP/1.1





Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stderr mode="text">
0 says 7 Failed to connect to %HOSTIP port %NOLISTENPORT: Connection refused

</stderr>




</verify>
</testcase>











|
|
|


<












|






|
>
>
>
>
>






|
>

>
>
>
>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--write-out
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 404 Not Found
Content-Length: 0
Connection: close


</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
--write-out with %{onerror} and %{urlnum} to stderr
 </name>
<command>
-f -s -w '%{onerror}%{stderr}%{urlnum} says %{exitcode} %{errormsg}\n' http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stderr mode="text">
0 says 22 The requested URL returned error: 404
1 says 22 The requested URL returned error: 404
</stderr>
# 22 is CURLE_HTTP_RETURNED_ERROR
<errorcode>
22
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test119.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP download, failed RETR with PORT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/119 -P -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
19
</errorcode>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
TYPE I
SIZE 119
RETR 119
QUIT
</protocol>
</verify>
</testcase>







|


















|
|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP download, failed RETR with PORT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
19
</errorcode>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1190.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/1190
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client
Changes to jni/curl/tests/data/test1191.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
mqtt
</server>
<name>
MQTT PUBLISH
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/1191 -d something
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
mqtt
</server>
<name>
MQTT PUBLISH
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/%TESTNUMBER -d something
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client
Changes to jni/curl/tests/data/test1192.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE 2k topic
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1192
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE 2k topic
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client
Changes to jni/curl/tests/data/test1193.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
mqtt
</server>
<name>
MQTT PUBLISH 2k payload
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/1193 -d @log/payload1193
</command>
<file name="log/payload1193">
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789







|

|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
mqtt
</server>
<name>
MQTT PUBLISH 2k payload
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/%TESTNUMBER -d @log/payload%TESTNUMBER
</command>
<file name="log/payload%TESTNUMBER">
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Changes to jni/curl/tests/data/test1194.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE with PUBLISH befoire SUBACK
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/1194
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE with PUBLISH befoire SUBACK
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client
Changes to jni/curl/tests/data/test1195.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE with short PUBLISH
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/1195
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
mqtt
</server>
<name>
MQTT SUBSCRIBE with short PUBLISH
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client
Changes to jni/curl/tests/data/test1196.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
mqtt
</server>
<name>
MQTT with error in CONNACK
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/1196
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
mqtt
</server>
<name>
MQTT with error in CONNACK
</name>
<command option="binary-trace">
mqtt://%HOSTIP:%MQTTPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# These are hexadecimal protocol dumps from the client
Changes to jni/curl/tests/data/test1197.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./11970001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST redirected to GET and --write-out method
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1197 -w "%{method}\n" -L -d "twinkle twinkle little star"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /1197 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

twinkle twinkle little starGET /11970001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./11970001

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
GET
</stdout>

</verify>
</testcase>







|



|





|



















|







|






|








|



|


|










9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./%TESTNUMBER0001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST redirected to GET and --write-out method
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{method}\n" -L -d "twinkle twinkle little star"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

twinkle twinkle little starGET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./%TESTNUMBER0001

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 15
Connection: close
Content-Type: text/plain; charset=us-ascii

bigger monster
GET
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test12.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP range support
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/12 -r 100-200
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/12 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=100-200
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|






|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP range support
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -r 100-200
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=100-200
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test120.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
ftp download with post-quote delete operation
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/120 -Q "-DELE file"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 120
RETR 120
DELE file
QUIT
</protocol>
</verify>
</testcase>







|












|
|





27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
ftp download with post-quote delete operation
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -Q "-DELE file"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
DELE file
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1200.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
gopher
</server>
 <name>
Gopher index
 </name>
 <command>
gopher://%HOSTIP:%GOPHERPORT/1/1200
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/1200
</protocol>
</verify>
</testcase>







|







|



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
gopher
</server>
 <name>
Gopher index
 </name>
 <command>
gopher://%HOSTIP:%GOPHERPORT/1/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1201.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
gopher
</server>
 <name>
Gopher selector
 </name>
 <command>
gopher://%HOSTIP:%GOPHERPORT/1/selector/SELECTOR/1201?
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/selector/SELECTOR/1201?
</protocol>
</verify>
</testcase>







|







|



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
gopher
</server>
 <name>
Gopher selector
 </name>
 <command>
gopher://%HOSTIP:%GOPHERPORT/1/selector/SELECTOR/%TESTNUMBER?
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/selector/SELECTOR/%TESTNUMBER?
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1202.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
gopher
</server>
 <name>
Gopher query
 </name>
 <command>
"gopher://%HOSTIP:%GOPHERPORT/7/the/search/engine%09query%20succeeded/1202"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/the/search/engine	query succeeded/1202
</protocol>
</verify>
</testcase>







|







|



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
gopher
</server>
 <name>
Gopher query
 </name>
 <command>
"gopher://%HOSTIP:%GOPHERPORT/7/the/search/engine%09query%20succeeded/%TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/the/search/engine	query succeeded/%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1203.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
gopher-ipv6
</server>
 <name>
Gopher IPv6 index
 </name>
 <command>
-g gopher://%HOST6IP:%GOPHER6PORT/1/moo/1203
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/moo/1203
</protocol>
</verify>
</testcase>







|







|



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
gopher-ipv6
</server>
 <name>
Gopher IPv6 index
 </name>
 <command>
-g gopher://%HOST6IP:%GOPHER6PORT/1/moo/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/moo/%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1204.
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<server>
http
</server>
 <name>
HTTP with WWW-Authenticate and multiple auths in a single line
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1204 -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1204 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1204 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|






|




|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<server>
http
</server>
 <name>
HTTP with WWW-Authenticate and multiple auths in a single line
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test1205.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Funny-head: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAendofthem

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET with 18K HTTP header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1205
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1205 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|


















|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Funny-head: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAendofthem

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET with 18K HTTP header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1206.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PORT and 425 on download
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1206 -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1206
RETR 1206
QUIT
</protocol>
<errorcode>
10
</errorcode>
</verify>
</testcase>







|















|
|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PORT and 425 on download
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
<errorcode>
10
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1207.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PORT and 421 on download
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1207 -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1207
RETR 1207
QUIT
</protocol>
<errorcode>
10
</errorcode>
</verify>
</testcase>







|















|
|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PORT and 421 on download
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
<errorcode>
10
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1208.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP PORT download, no data conn and no transient negative reply
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1208 -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>

# This test doesn't send a QUIT because the main state machine in multi.c
# triggers the timeout and sets the CURLE_OPERATION_TIMEDOUT error (28) for
# which the FTP disconnect code generically has to assume could mean the
# control the connection and thus it cannot send any command.
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1208
RETR 1208
</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>







|




















|
|






23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP PORT download, no data conn and no transient negative reply
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>

# This test doesn't send a QUIT because the main state machine in multi.c
# triggers the timeout and sets the CURLE_OPERATION_TIMEDOUT error (28) for
# which the FTP disconnect code generically has to assume could mean the
# control the connection and thus it cannot send any command.
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1209.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
ftp
</server>
 <name>
FTP PORT download, no data conn and no positive preliminary reply
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1209 -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
ftp
</server>
 <name>
FTP PORT download, no data conn and no positive preliminary reply
 </name>
 <command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# data connection it could still use the control channel.
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1209
RETR 1209
</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>







|
|






44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# data connection it could still use the control channel.
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test121.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
ftp download with post- and pre-transfer delete operations
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/121 -Q "-DELE after_transfer" -Q "DELE before_transfer"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
DELE before_transfer
EPSV
TYPE I
SIZE 121
RETR 121
DELE after_transfer
QUIT
</protocol>
</verify>
</testcase>







|












|
|





25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
ftp download with post- and pre-transfer delete operations
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -Q "-DELE after_transfer" -Q "DELE before_transfer"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
DELE before_transfer
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
DELE after_transfer
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1210.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<name>
HTTP GET with -J without Content-Disposition
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1210 -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1210 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/1210">
12345
</file>

</verify>
</testcase>







|







|





|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<name>
HTTP GET with -J without Content-Disposition
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/%TESTNUMBER">
12345
</file>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1211.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PORT and 425 on download
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1211 -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>

<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1211
RETR 1211
</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>







|
















|
|






22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP PORT and 425 on download
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P -
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>

<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1212.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
noproxy setting together with socks proxy
 </name>

<command>
http://user:secret@%HOSTIP:%HTTPPORT/ulion/1212 --socks5 non-existing-host.haxx.se:1080 --noproxy %HOSTIP --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /ulion/1212 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|


















|






|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
noproxy setting together with socks proxy
 </name>

<command>
http://user:secret@%HOSTIP:%HTTPPORT/ulion/%TESTNUMBER --socks5 non-existing-host.haxx.se:1080 --noproxy %HOSTIP --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /ulion/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1213.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 <name>
HTTP with proxy and host-only URL
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT we.want.that.site.com.1213
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com.1213/ HTTP/1.1
Host: we.want.that.site.com.1213
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|









|
|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 <name>
HTTP with proxy and host-only URL
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT we.want.that.site.com.%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com.%TESTNUMBER/ HTTP/1.1
Host: we.want.that.site.com.%TESTNUMBER
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1214.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 <name>
HTTP with proxy and URL with ? and no slash separator
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT http://we.want.that.site.com.1214?moo=foo
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com.1214/?moo=foo HTTP/1.1
Host: we.want.that.site.com.1214
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|









|
|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 <name>
HTTP with proxy and URL with ? and no slash separator
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT http://we.want.that.site.com.%TESTNUMBER?moo=foo
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com.%TESTNUMBER/?moo=foo HTTP/1.1
Host: we.want.that.site.com.%TESTNUMBER
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1215.
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/1215 -u testuser:testpass --ntlm --proxy http://%HOSTIP:%HTTPPORT
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>







|









|






|







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm --proxy http://%HOSTIP:%HTTPPORT
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
Changes to jni/curl/tests/data/test1216.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
 <name>
HTTP cookie domains tailmatching the host name
 </name>
 <command>
http://example.fake/c/1216 http://bexample.fake/c/1216 -b log/injar1216 -x %HOSTIP:%HTTPPORT
</command>
<file name="log/injar1216">
example.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
example.fake	FALSE	/b	FALSE	0		moo1	indeed
example.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
example.fake	TRUE	/c	FALSE	2139150993	moo3	indeed
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.fake/c/1216 HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: moo3=indeed; moo2=indeed

GET http://bexample.fake/c/1216 HTTP/1.1
Host: bexample.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>







|

|













|






|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
 <name>
HTTP cookie domains tailmatching the host name
 </name>
 <command>
http://example.fake/c/%TESTNUMBER http://bexample.fake/c/%TESTNUMBER -b log/injar%TESTNUMBER -x %HOSTIP:%HTTPPORT
</command>
<file name="log/injar%TESTNUMBER">
example.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
example.fake	FALSE	/b	FALSE	0		moo1	indeed
example.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
example.fake	TRUE	/c	FALSE	2139150993	moo3	indeed
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.fake/c/%TESTNUMBER HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: moo3=indeed; moo2=indeed

GET http://bexample.fake/c/%TESTNUMBER HTTP/1.1
Host: bexample.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
Changes to jni/curl/tests/data/test1217.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP with rubbish before name in 257-response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/get/file/1217 ftp://%HOSTIP:%FTPPORT/get/file/again/1217 --ftp-method singlecwd
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD get/file
EPSV
TYPE I
SIZE 1217
RETR 1217
CWD /this/is/the/path
CWD get/file/again
EPSV
SIZE 1217
RETR 1217
QUIT
</protocol>
</verify>
</testcase>







|

















|
|



|
|




22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP with rubbish before name in 257-response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/get/file/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/get/file/again/%TESTNUMBER --ftp-method singlecwd
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD get/file
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
CWD /this/is/the/path
CWD get/file/again
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1218.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP cookies and domains with same prefix
 </name>
 <command>
http://example.fake/c/1218 http://example.fake/c/1218 http://bexample.fake/c/1218 -b nonexisting -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.fake/c/1218 HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.fake/c/1218 HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: bug=fixed

GET http://bexample.fake/c/1218 HTTP/1.1
Host: bexample.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>







|









|





|






|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP cookies and domains with same prefix
 </name>
 <command>
http://example.fake/c/%TESTNUMBER http://example.fake/c/%TESTNUMBER http://bexample.fake/c/%TESTNUMBER -b nonexisting -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.fake/c/%TESTNUMBER HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.fake/c/%TESTNUMBER HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: bug=fixed

GET http://bexample.fake/c/%TESTNUMBER HTTP/1.1
Host: bexample.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
Changes to jni/curl/tests/data/test1219.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP with no user+password required (230 response)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1219
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PWD
EPSV
TYPE I
SIZE 1219
RETR 1219
QUIT
</protocol>
</verify>
</testcase>







|










|
|




26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP with no user+password required (230 response)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test122.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP download resume with whole file already downloaded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/122 -C 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 122
QUIT
</protocol>
</verify>
</testcase>







|












|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP download resume with whole file already downloaded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -C 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1220.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
file
</server>
 <name>
file:// URLs with query string
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test1220.txt?a_query=foobar#afragment
</command>
<file name="log/test1220.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>







|

|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
file
</server>
 <name>
file:// URLs with query string
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test%TESTNUMBER.txt?a_query=foobar#afragment
</command>
<file name="log/test%TESTNUMBER.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
Changes to jni/curl/tests/data/test1223.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# disable data check since it gets sent to stdout and is verified there
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Connection: close
Content-Type: text/html

hej
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET -w remote_ip and -w remote_port
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1223 -w 'IP %{remote_ip} and PORT %{remote_port}\n'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1223 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Connection: close
Content-Type: text/html

hej
IP %HOSTIP and PORT %HTTPPORT
</stdout>
</verify>
</testcase>













|


















|







|







|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# disable data check since it gets sent to stdout and is verified there
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Connection: close
Content-Type: text/html

hej
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET -w remote_ip and -w remote_port
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w 'IP %{remote_ip} and PORT %{remote_port}\n'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Connection: close
Content-Type: text/html

hej
IP %HOSTIP and PORT %HTTPPORT
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1224.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP fetch a file from the root directory
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//1224
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
EPSV
TYPE I
SIZE 1224
RETR 1224
QUIT
</protocol>
</verify>
</testcase>







|













|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP fetch a file from the root directory
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1225.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
 <name>
FTP fetch two files using absolute paths
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//foo/1225 ftp://%HOSTIP:%FTPPORT//foo/bar/1225
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD foo
EPSV
TYPE I
SIZE 1225
RETR 1225
CWD /
CWD foo
CWD bar
EPSV
SIZE 1225
RETR 1225
QUIT
</protocol>
</verify>
</testcase>







|














|
|




|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
 <name>
FTP fetch two files using absolute paths
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//foo/%TESTNUMBER ftp://%HOSTIP:%FTPPORT//foo/bar/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD foo
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
CWD /
CWD foo
CWD bar
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1226.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP fetch a file from the root directory with singlecwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//1226 --ftp-method singlecwd
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
EPSV
TYPE I
SIZE 1226
RETR 1226
QUIT
</protocol>
</verify>
</testcase>







|













|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP fetch a file from the root directory with singlecwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//%TESTNUMBER --ftp-method singlecwd
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1227.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP fetch a file from the root directory with nocwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//1227 --ftp-method nocwd
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE /1227
RETR /1227
QUIT
</protocol>
</verify>
</testcase>







|












|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP fetch a file from the root directory with nocwd
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT//%TESTNUMBER --ftp-method nocwd
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE /%TESTNUMBER
RETR /%TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1228.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
 <name>
HTTP cookie path match
 </name>
 <command>
http://example.fake/hoge/1228 http://example.fake/hogege/ -b nonexisting -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.fake/hoge/1228 HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.fake/hogege/ HTTP/1.1
Host: example.fake







|









|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
 <name>
HTTP cookie path match
 </name>
 <command>
http://example.fake/hoge/%TESTNUMBER http://example.fake/hogege/ -b nonexisting -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.fake/hoge/%TESTNUMBER HTTP/1.1
Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.fake/hogege/ HTTP/1.1
Host: example.fake
Changes to jni/curl/tests/data/test1229.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization with user name needing escape
 </name>
 <command>
http://%5cuser%22:password@%HOSTIP:%HTTPPORT/1229 --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1229 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1229 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="\\user\"", realm="testrealm", nonce="1053604145", uri="/1229", response="f2694d426040712584c156d3de72b8d6"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization with user name needing escape
 </name>
 <command>
http://%5cuser%22:password@%HOSTIP:%HTTPPORT/%TESTNUMBER --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="\\user\"", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="f2694d426040712584c156d3de72b8d6"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test123.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP upload resume with whole file already downloaded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/123 -T log/upload123 -C 51
</command>
<file name="log/upload123">
--------------------------------------------------
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>







|

|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP upload resume with whole file already downloaded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -C 51
</command>
<file name="log/upload%TESTNUMBER">
--------------------------------------------------
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
Changes to jni/curl/tests/data/test1230.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

#
# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

mooooooo
</data>

<connect>
HTTP/1.1 200 welcome dear
Date: Thu, 09 Nov 2010 14:49:00 GMT

</connect>

<datacheck>
HTTP/1.1 200 welcome dear
Date: Thu, 09 Nov 2010 14:49:00 GMT

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

mooooooo
</datacheck>
</reply>

#







|







|





|


|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

#
# Server-side
<reply>

<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

mooooooo
</data>

<connect>
HTTP/1.1 200 welcome dear
Date: Tue, 09 Nov 2010 14:49:00 GMT

</connect>

<datacheck>
HTTP/1.1 200 welcome dear
Date: Tue, 09 Nov 2010 14:49:00 GMT

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

mooooooo
</datacheck>
</reply>

#
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
http-proxy
http-ipv6
http
</server>
 <name>
HTTP CONNECT to IPv6 numerical address
 </name>
# 0x4ce == 1230, the test number
 <command>
http://[1234:1234:1234::4ce]:%HTTPPORT/wanted/page/1230 -p -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT [1234:1234:1234::4ce]:%HTTPPORT HTTP/1.1
Host: [1234:1234:1234::4ce]:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /wanted/page/1230 HTTP/1.1
Host: [1234:1234:1234::4ce]:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

|












|







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
http-proxy
http-ipv6
http
</server>
 <name>
HTTP CONNECT to IPv6 numerical address
 </name>
# 0x4ce == %TESTNUMBER, the test number
 <command>
http://[1234:1234:1234::4ce]:%HTTPPORT/wanted/page/%TESTNUMBER -p -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT [1234:1234:1234::4ce]:%HTTPPORT HTTP/1.1
Host: [1234:1234:1234::4ce]:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /wanted/page/%TESTNUMBER HTTP/1.1
Host: [1234:1234:1234::4ce]:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1231.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
http
</server>
 <name>
HTTP URL with dotdot removal from path
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/../../hej/but/who/../1231?stupid=me/../1231#soo/../1231 http://%HOSTIP:%HTTPPORT/../../hej/but/who/../12310001#/../12310001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /hej/but/1231?stupid=me/../1231 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /hej/but/12310001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|




|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
http
</server>
 <name>
HTTP URL with dotdot removal from path
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/../../hej/but/who/../%TESTNUMBER?stupid=me/../%TESTNUMBER#soo/../%TESTNUMBER http://%HOSTIP:%HTTPPORT/../../hej/but/who/../%TESTNUMBER0001#/../%TESTNUMBER0001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /hej/but/%TESTNUMBER?stupid=me/../%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /hej/but/%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1232.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
HTTP URL with dotdot removal from path using an HTTP proxy
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1232:8990/../../hej/but/who/../1232?stupid=me/../1232#soo/../1232 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../12320001#/../12320001
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.haxx.se.1232:8990/hej/but/1232?stupid=me/../1232 HTTP/1.1
Host: test.remote.haxx.se.1232:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.haxx.se.1232:8990/hej/but/12320001 HTTP/1.1
Host: test.remote.haxx.se.1232:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|










|
|




|
|







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
HTTP URL with dotdot removal from path using an HTTP proxy
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.%TESTNUMBER:8990/../../hej/but/who/../%TESTNUMBER?stupid=me/../%TESTNUMBER#soo/../%TESTNUMBER http://test.remote.haxx.se.%TESTNUMBER:8990/../../hej/but/who/../%TESTNUMBER0001#/../%TESTNUMBER0001
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.haxx.se.%TESTNUMBER:8990/hej/but/%TESTNUMBER?stupid=me/../%TESTNUMBER HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.haxx.se.%TESTNUMBER:8990/hej/but/%TESTNUMBER0001 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1233.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP failing to connect to EPSV port, switching to PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1233
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 1233
RETR 1233
QUIT
</protocol>
</verify>
</testcase>







|












|
|




22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP failing to connect to EPSV port, switching to PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1234.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
none
</server>
 <name>
abusing {}-globbing
 </name>
 <command>
"%HOSTIP:%NOLISTENPORT/1234[0-1]{" "%HOSTIP:%NOLISTENPORT/{}{}{}{"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
none
</server>
 <name>
abusing {}-globbing
 </name>
 <command>
"%HOSTIP:%NOLISTENPORT/%TESTNUMBER[0-1]{" "%HOSTIP:%NOLISTENPORT/{}{}{}{"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>
Changes to jni/curl/tests/data/test1235.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44





45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<server>
http
</server>
 <name>
multiple requests using {}{} in the URL
 </name>
 <command>
"%HOSTIP:%HTTPPORT/{1235,1235}{0001,0002}"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /12350001 HTTP/1.1





Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /12350002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /12350001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /12350002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
--_curl_--%HOSTIP:%HTTPPORT/12350001
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 15

the number one
--_curl_--%HOSTIP:%HTTPPORT/12350002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16

two is nice too
--_curl_--%HOSTIP:%HTTPPORT/12350001
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 15

the number one
--_curl_--%HOSTIP:%HTTPPORT/12350002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16

two is nice too
</stdout>
</verify>







|






|
>
>
>
>
>




|




<
<
<
<
<
|






|





|





|





|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58





59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<server>
http
</server>
 <name>
multiple requests using {}{} in the URL
 </name>
 <command>
"%HOSTIP:%HTTPPORT/{%TESTNUMBER,%TESTNUMBER}{0001,0002}"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*






GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
--_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0001
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 15

the number one
--_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16

two is nice too
--_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0001
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 15

the number one
--_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16

two is nice too
</stdout>
</verify>
Changes to jni/curl/tests/data/test1237.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
URL with 1000+ letter user name + password
 </name>
 <command>
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@%HOSTIP:%HTTPPORT/1237"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1237 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|






|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
URL with 1000+ letter user name + password
 </name>
 <command>
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@%HOSTIP:%HTTPPORT/%TESTNUMBER"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test1238.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
tftp
</killserver>
 <name>
slow TFTP retrieve cancel due to -Y and -y
 </name>
# if less than 1000 bytes/sec within 2 seconds, abort!
 <command>
tftp://%HOSTIP:%TFTPPORT//1238 -Y1000 -y2
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /1238
</protocol>
# 28 = CURLE_OPERATION_TIMEDOUT
<errorcode>
28
</errorcode>
</verify>
</testcase>







|












|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
tftp
</killserver>
 <name>
slow TFTP retrieve cancel due to -Y and -y
 </name>
# if less than 1000 bytes/sec within 2 seconds, abort!
 <command>
tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER -Y1000 -y2
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
# 28 = CURLE_OPERATION_TIMEDOUT
<errorcode>
28
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1239.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-z
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-z
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP with -z + -w response_code and simulated 304
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1239 -z "-dec 12 12:00:00 1999 GMT" -w '%{response_code}'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1239 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Unmodified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html

304
</stdout>
</verify>
</testcase>







|







|








|












30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP with -z + -w response_code and simulated 304
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -z "-dec 12 12:00:00 1999 GMT" -w '%{response_code}'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Unmodified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html

304
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test124.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download, failed PWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/124
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE 124
RETR 124
QUIT
</protocol>
</verify>
</testcase>







|












|
|




22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download, failed PWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1240.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
glob [0-1] with stuff after range (7.33.0 regression)
 </name>
 <command>
"%HOSTIP:%HTTPPORT/0[0-1]/1240"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /00/1240 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /01/1240 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
glob [0-1] with stuff after range (7.33.0 regression)
 </name>
 <command>
"%HOSTIP:%HTTPPORT/0[0-1]/%TESTNUMBER"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /00/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /01/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1241.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP _without_ dotdot removal
 </name>
 <command>
--path-as-is --proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241 HTTP/1.1
Host: test.remote.haxx.se.1241:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001 HTTP/1.1
Host: test.remote.haxx.se.1241:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|










|
|




|
|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
HTTP _without_ dotdot removal
 </name>
 <command>
--path-as-is --proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.%TESTNUMBER:8990/../../hej/but/who/../%TESTNUMBER?stupid=me/../%TESTNUMBER#soo/../%TESTNUMBER http://test.remote.haxx.se.%TESTNUMBER:8990/../../hej/but/who/../%TESTNUMBER0001#/../%TESTNUMBER0001
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.haxx.se.%TESTNUMBER:8990/../../hej/but/who/../%TESTNUMBER?stupid=me/../%TESTNUMBER HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.haxx.se.%TESTNUMBER:8990/../../hej/but/who/../%TESTNUMBER0001 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1242.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
tftp
</server>
 <name>
TFTP retrieve without TFTP options requests
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//1242 --tftp-no-options
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
filename: /1242
</protocol>
</verify>
</testcase>







|









|



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
tftp
</server>
 <name>
TFTP retrieve without TFTP options requests
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --tftp-no-options
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1243.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
tftp
</server>
 <name>
TFTP send without TFTP options requests
 </name>
 <command>
-T log/test1243.txt tftp://%HOSTIP:%TFTPPORT// --tftp-no-options
</command>
<file name="log/test1243.txt">
a chunk of
data
sent
 to server
</file>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<upload>
a chunk of
data
sent
 to server
</upload>
<protocol>
opcode: 2
mode: octet
filename: /test1243.txt
</protocol>
</verify>
</testcase>







|

|



















|



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
tftp
</server>
 <name>
TFTP send without TFTP options requests
 </name>
 <command>
-T log/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT// --tftp-no-options
</command>
<file name="log/test%TESTNUMBER.txt">
a chunk of
data
sent
 to server
</file>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<upload>
a chunk of
data
sent
 to server
</upload>
<protocol>
opcode: 2
mode: octet
filename: /test%TESTNUMBER.txt
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1244.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<features>
proxy
</features>
<name>
HTTP GET same URL - different proxy ports
</name>
<command>
http://%HOSTIP:%HTTPPORT/1244 -x %HOSTIP:%HTTPPORT --next http://%HOSTIP:%HTTPPORT/124400001 -x %HOSTIP:%HTTPSPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# the second request meant to fail
<errorcode>
56
</errorcode>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1244 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>







|











|







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<features>
proxy
</features>
<name>
HTTP GET same URL - different proxy ports
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -x %HOSTIP:%HTTPPORT --next http://%HOSTIP:%HTTPPORT/%TESTNUMBER00001 -x %HOSTIP:%HTTPSPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# the second request meant to fail
<errorcode>
56
</errorcode>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
Changes to jni/curl/tests/data/test1245.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0
Location: ftp://%HOSTIP:%FTPPORT/1245
Connection: close

</data>
</reply>

#
# Client-side
<client>
<server>
http
ftp
</server>
<name>
--proto deny must override --proto-redir allow
</name>
<command>
--location --proto +all,-ftp --proto-redir -all,+ftp http://%HOSTIP:%HTTPPORT/1245
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1245 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 1 - Protocol ftp not supported or disabled in libcurl
<errorcode>
1
</errorcode>
</verify>
</testcase>







|


|
















|







|











11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0
Location: ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
Connection: close

</data>
</reply>

#
# Client-side
<client>
<server>
http
ftp
</server>
<name>
--proto deny must override --proto-redir allow
</name>
<command>
--location --proto +all,-ftp --proto-redir -all,+ftp http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 1 - Protocol ftp not supported or disabled in libcurl
<errorcode>
1
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1246.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
URL with '#' at end of host name instead of '/'
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1246:%HTTPPORT#@127.0.0.1/tricked.html no-scheme-url.com.1246:%HTTPPORT#@127.127.127.127/again.html
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.haxx.se.1246:%HTTPPORT/ HTTP/1.1
Host: test.remote.haxx.se.1246:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://no-scheme-url.com.1246:%HTTPPORT/ HTTP/1.1
Host: no-scheme-url.com.1246:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|










|
|




|
|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<server>
http
</server>
 <name>
URL with '#' at end of host name instead of '/'
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.%TESTNUMBER:%HTTPPORT#@127.0.0.1/tricked.html no-scheme-url.com.%TESTNUMBER:%HTTPPORT#@127.127.127.127/again.html
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.haxx.se.%TESTNUMBER:%HTTPPORT/ HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://no-scheme-url.com.%TESTNUMBER:%HTTPPORT/ HTTP/1.1
Host: no-scheme-url.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1247.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
http
</server>
 <name>
--fail-early
 </name>
 <command>
--fail-early h1234://%HOSTIP:%HTTPPORT/1247 http://%HOSTIP:%HTTPPORT/1247
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# Protocol "h1234" not supported or disabled in libcurl







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
http
</server>
 <name>
--fail-early
 </name>
 <command>
--fail-early h1234://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# Protocol "h1234" not supported or disabled in libcurl
Changes to jni/curl/tests/data/test1248.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<testcase>
<info>
<keywords>
HTTP
HTTP proxy
noproxy
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Access a non-proxied host with using the combination of --proxy option and --noproxy option
</name>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/1248 --proxy http://dummy:%NOLISTENPORT/ --noproxy %HOSTIP --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1248 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|

















|






|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<testcase>
<info>
<keywords>
HTTP
HTTP proxy
noproxy
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Access a non-proxied host with using the combination of --proxy option and --noproxy option
</name>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://dummy:%NOLISTENPORT/ --noproxy %HOSTIP --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1249.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP proxy
NO_PROXY
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Access a non-proxied host with using the combination of --proxy option and NO_PROXY env var
</name>
<setenv>
NO_PROXY=%HOSTIP
</setenv>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/1249 --proxy http://dummy:%NOLISTENPORT/ --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1249 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|




















|






|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP proxy
NO_PROXY
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Access a non-proxied host with using the combination of --proxy option and NO_PROXY env var
</name>
<setenv>
NO_PROXY=%HOSTIP
</setenv>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://dummy:%NOLISTENPORT/ --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test125.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download, failed CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/file/125
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
9







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download, failed CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/file/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
9
Changes to jni/curl/tests/data/test1250.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Access a non-proxied host with using the combination of http_proxy env var and --noproxy option
</name>
<setenv>
http_proxy=http://dummy:%PROXYPORT/
</setenv>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/1250 --noproxy %HOSTIP --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1250 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|




















|






|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Access a non-proxied host with using the combination of http_proxy env var and --noproxy option
</name>
<setenv>
http_proxy=http://dummy:%PROXYPORT/
</setenv>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER --noproxy %HOSTIP --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1251.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Access a non-proxied host with using the combination of http_proxy env var and NO_PROXY env var
</name>
<setenv>
http_proxy=http://dummy:%PROXYPORT/
NO_PROXY=%HOSTIP
</setenv>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/1251 --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1251 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|








30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Access a non-proxied host with using the combination of http_proxy env var and NO_PROXY env var
</name>
<setenv>
http_proxy=http://dummy:%PROXYPORT/
NO_PROXY=%HOSTIP
</setenv>
<command>
http://user:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER --max-time 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpzZWNyZXQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1252.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Under condition using --proxy, override NO_PROXY by --nproxy and access target URL directly
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/1252 --proxy http://%HOSTIP:%HTTPPORT --noproxy %HOSTIP
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1252 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|




















|






|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Under condition using --proxy, override NO_PROXY by --nproxy and access target URL directly
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --noproxy %HOSTIP
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1253.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Under condition using --proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1253 --proxy http://%HOSTIP:%HTTPPORT --noproxy %HOSTIP
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/1253 HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|




















|









|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Under condition using --proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --noproxy %HOSTIP
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/%TESTNUMBER HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1254.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Under condition using --proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1254 --proxy http://%HOSTIP:%HTTPPORT --noproxy ""
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/1254 HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|




















|









|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Under condition using --proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --noproxy ""
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/%TESTNUMBER HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1255.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Under condition using http_proxy, override NO_PROXY by --nproxy and access target URL directly
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/1255 --noproxy %HOSTIP
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1255 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Under condition using http_proxy, override NO_PROXY by --nproxy and access target URL directly
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --noproxy %HOSTIP
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1256.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Under condition using http_proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1256 --noproxy %HOSTIP
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/1256 HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|









|








30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Under condition using http_proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/%TESTNUMBER --noproxy %HOSTIP
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/%TESTNUMBER HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1257.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Under condition using http_proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1257 --noproxy ""
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/1257 HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|









|








30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Under condition using http_proxy, override NO_PROXY by --nproxy and access target URL through proxy
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/%TESTNUMBER --noproxy ""
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://somewhere.example.com/%TESTNUMBER HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1258.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Set-Cookie: I-am=here; domain=localhost;

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, use cookies with localhost
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1258 http://%HOSTIP:%HTTPPORT/we/want?hoge=fuga -b non-existing -H "Host: localhost"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1258 HTTP/1.1
Host: localhost
User-Agent: curl/%VERSION
Accept: */*

GET /we/want?hoge=fuga HTTP/1.1
Host: localhost
User-Agent: curl/%VERSION
Accept: */*
Cookie: I-am=here

</protocol>
</verify>
</testcase>







|
















|






|













9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Set-Cookie: I-am=here; domain=localhost;

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, use cookies with localhost
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER http://%HOSTIP:%HTTPPORT/we/want?hoge=fuga -b non-existing -H "Host: localhost"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: localhost
User-Agent: curl/%VERSION
Accept: */*

GET /we/want?hoge=fuga HTTP/1.1
Host: localhost
User-Agent: curl/%VERSION
Accept: */*
Cookie: I-am=here

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1259.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Set-Cookie: I-am=here; domain=localhost;

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP URL with semicolon in password
 </name>
 <command>
"http://user:pass;word@%HOSTIP:%HTTPPORT/we/want/1259"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1259 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpwYXNzO3dvcmQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|
















|






|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Set-Cookie: I-am=here; domain=localhost;

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP URL with semicolon in password
 </name>
 <command>
"http://user:pass;word@%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpwYXNzO3dvcmQ=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test126.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP download with multiple replies at once in RETR
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/126
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
CWD lululul
EPSV
TYPE I
SIZE 126
RETR 126
QUIT
</protocol>
</verify>
</testcase>







|













|
|




22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP download with multiple replies at once in RETR
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
CWD lululul
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1260.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<features>
http
</features>
 <name>
HTTP URL with rubbish after port number
 </name>
 <command>
-g "http://[%HOSTIP]:%NOLISTENPORT:80/we/want/1260" "http://%HOSTIP:%NOLISTENPORT:80/we/want/1260" "http://user@example.com:80@localhost"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# CURLE_URL_MALFORMAT == 3
<errorcode>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<features>
http
</features>
 <name>
HTTP URL with rubbish after port number
 </name>
 <command>
-g "http://[%HOSTIP]:%NOLISTENPORT:80/we/want/%TESTNUMBER" "http://%HOSTIP:%NOLISTENPORT:80/we/want/%TESTNUMBER" "http://user@example.com:80@localhost"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# CURLE_URL_MALFORMAT == 3
<errorcode>
Changes to jni/curl/tests/data/test1261.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
'redirect_url' with --location and --max-redir
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/1261 -w '%{redirect_url}\n' --location --max-redir 0
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1261 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# CURLE_TOO_MANY_REDIRECTS
<errorcode>







|






|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
'redirect_url' with --location and --max-redir
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER -w '%{redirect_url}\n' --location --max-redir 0
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# CURLE_TOO_MANY_REDIRECTS
<errorcode>
Changes to jni/curl/tests/data/test1262.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
ftp
</server>
 <name>
FTP request and denied to download an older file with -z
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/1262 -z "-1 jan 2001"
</command>
</client>

<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM 1262
QUIT
</protocol>
</verify>
</testcase>







|









|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
ftp
</server>
 <name>
FTP request and denied to download an older file with -z
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/%TESTNUMBER -z "-1 jan 2001"
</command>
</client>

<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1263.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<features>
http
</features>
 <name>
HTTP URL with rubbish after IPv6 bracket
 </name>
 <command>
-g "http://[%HOSTIP]test:%NOLISTENPORT/we/want/1263" "http://[%HOSTIP][%HOSTIP]:%NOLISTENPORT/we/want/1263" "http://user@[::1]@localhost"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# CURLE_URL_MALFORMAT == 3
<errorcode>







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<features>
http
</features>
 <name>
HTTP URL with rubbish after IPv6 bracket
 </name>
 <command>
-g "http://[%HOSTIP]test:%NOLISTENPORT/we/want/%TESTNUMBER" "http://[%HOSTIP][%HOSTIP]:%NOLISTENPORT/we/want/%TESTNUMBER" "http://user@[::1]@localhost"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# CURLE_URL_MALFORMAT == 3
<errorcode>
Changes to jni/curl/tests/data/test1264.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<features>
http
</features>
 <name>
HTTP URL with space in host name
 </name>
 <command>
-g "http://127.0.0.1 www.example.com/we/want/1264"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# CURLE_URL_MALFORMAT == 3
<errorcode>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<features>
http
</features>
 <name>
HTTP URL with space in host name
 </name>
 <command>
-g "http://127.0.0.1 www.example.com/we/want/%TESTNUMBER"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# CURLE_URL_MALFORMAT == 3
<errorcode>
Changes to jni/curl/tests/data/test1265.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html

foo
</data>
</reply>
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
NO_PROXY with IPv6 numerical address
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=::1
</setenv>
<command>
http://%HOST6IP:%HTTP6PORT/1265
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1265 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
NO_PROXY with IPv6 numerical address
</name>
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=::1
</setenv>
<command>
http://%HOST6IP:%HTTP6PORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1266.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with a single-byte HTTP/0.9 response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1266 --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1266 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with a single-byte HTTP/0.9 response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1267.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with a invalid HTTP/1 response line start
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1267 --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1267 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with a invalid HTTP/1 response line start
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1268.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<features>
unix-sockets
</features>
 <name>
file name argument looks like a flag
 </name>
 <command>
--stderr log/moo1268 --unix-socket -k hej://moo
</command>
</client>

<verify>
<file name="log/moo1268" mode="text">
Warning: The file name argument '-k' looks like a flag.
curl: (1) Protocol "hej" not supported or disabled in libcurl
</file>

# we expect an error since we provide a weird URL
<errorcode>
1







|




|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<features>
unix-sockets
</features>
 <name>
file name argument looks like a flag
 </name>
 <command>
--stderr log/moo%TESTNUMBER --unix-socket -k hej://moo
</command>
</client>

<verify>
<file name="log/moo%TESTNUMBER" mode="text">
Warning: The file name argument '-k' looks like a flag.
curl: (1) Protocol "hej" not supported or disabled in libcurl
</file>

# we expect an error since we provide a weird URL
<errorcode>
1
Changes to jni/curl/tests/data/test1269.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
none
</server>
 <name>
too large --retry-delay value
 </name>
 <command>
--retry 3 --retry-delay 9223372036854776 http://%HOSTIP:%NOLISTENPORT/1269
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
none
</server>
 <name>
too large --retry-delay value
 </name>
 <command>
--retry 3 --retry-delay 9223372036854776 http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test127.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
ftp
</server>
 <name>
FTP --disable-epsv
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/file/127 --disable-epsv
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
CWD to
CWD file
PASV
TYPE I
SIZE 127
RETR 127
QUIT
</protocol>
</verify>
</testcase>







|














|
|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
ftp
</server>
 <name>
FTP --disable-epsv
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/file/%TESTNUMBER --disable-epsv
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
CWD to
CWD file
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1270.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
http
</server>
 <name>
Basic 'redirect_url'
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/1270 -w '%{redirect_url}\n' -s
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1270 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>







|






|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
http
</server>
 <name>
Basic 'redirect_url'
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER -w '%{redirect_url}\n' -s
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
Changes to jni/curl/tests/data/test1271.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
--write-out from file with empty file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/1271 -w @log/blank1271
</command>
<file name="log/blank1271">
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/1271 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

|






|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
--write-out from file with empty file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER -w @log/blank%TESTNUMBER
</command>
<file name="log/blank%TESTNUMBER">
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1272.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
gophers
</server>
 <name>
Gophers index
 </name>
 <command>
-k gophers://%HOSTIP:%GOPHERSPORT/1/1272
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/1272
</protocol>
</verify>
</testcase>







|







|



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
gophers
</server>
 <name>
Gophers index
 </name>
 <command>
-k gophers://%HOSTIP:%GOPHERSPORT/1/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/%TESTNUMBER
</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test1273.




























































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
# also verified by 1156 in libcurl API terms

<info>
<keywords>
HTTP
HTTP GET
Resume
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 416 Invalid range
Connection: close
Content-Length: 0

</data>

# The file data that exists at the start of the test must be included in
# the verification.
<datacheck>
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
HTTP/1.1 416 Invalid range
Connection: close
Content-Length: 0

</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
-f and resume transfer of an entirely-downloaded file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C - -f
</command>
<file name="log/curl%TESTNUMBER.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=100-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test128.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP upload with --crlf
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/128 -T log/upload128 --crlf
</command>
<file name="log/upload128">
file
with unix newlines
meant to be
converted
with
the
--crlf option
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR 128
QUIT
</protocol>
<upload>
file
with unix newlines
meant to be
converted
with
the
--crlf option
</upload>
</verify>
</testcase>







|

|


















|













16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP upload with --crlf
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/upload%TESTNUMBER --crlf
</command>
<file name="log/upload%TESTNUMBER">
file
with unix newlines
meant to be
converted
with
the
--crlf option
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
file
with unix newlines
meant to be
converted
with
the
--crlf option
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1280.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36





37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
globbing
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

bytes
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple [a-d] globbing
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/[a-d]/1280
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>





GET /a/1280 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /b/1280 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /c/1280 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /d/1280 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|
















|






>
>
>
>
>
|




|




|
<
<
<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52





53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
globbing
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

bytes
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple [a-d] globbing
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/[a-d]/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /a/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /b/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /c/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /d/%TESTNUMBER HTTP/1.1





Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1281.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
http
</features>
 <name>
reject non-numerical port number in URL
 </name>
 <command>
http://%HOSTIP:alpha/beta/1281
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
http
</features>
 <name>
reject non-numerical port number in URL
 </name>
 <command>
http://%HOSTIP:alpha/beta/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>
Changes to jni/curl/tests/data/test1282.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
GSS-API
</features>
 <name>
FTP with 633 response before gss initialized
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1282
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<features>
GSS-API
</features>
 <name>
FTP with 633 response before gss initialized
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
Changes to jni/curl/tests/data/test1283.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

bytes
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
globbing range with same start and stop
</name>
<command option="no-output">
http://%HOSTIP:%HTTPPORT/[a-a][1-1][b-b:1][2-2:1]/1283 -o "log/outfile1283_#1#2#3#4.dump"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /a1b2/1283 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/outfile1283_a1b2.dump">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

bytes
</file>
</verify>
</testcase>







|
















|






|





|

|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

bytes
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
globbing range with same start and stop
</name>
<command option="no-output">
http://%HOSTIP:%HTTPPORT/[a-a][1-1][b-b:1][2-2:1]/%TESTNUMBER -o "log/outfile%TESTNUMBER_#1#2#3#4.dump"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /a1b2/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/outfile%TESTNUMBER_a1b2.dump">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

bytes
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1284.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/1284
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /1284 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /1284 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1284", response="5763079608de439072861a59ac733515"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>







|






|






|

|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="5763079608de439072861a59ac733515"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>
Changes to jni/curl/tests/data/test1285.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<name>
HTTP PUT --digest with user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 85" -u auser:apasswd --digest -T log/put1285 http://%HOSTIP:%HTTPPORT/1285
</command>
<file name="log/put1285">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1285 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

PUT /1285 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1285", response="dc185587d5e8391b347eef194c2a3cd6"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line







|

|










|





|

|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<name>
HTTP PUT --digest with user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 85" -u auser:apasswd --digest -T log/put%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="dc185587d5e8391b347eef194c2a3cd6"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
Changes to jni/curl/tests/data/test1286.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Content-Length: 0

</data>
<data1000>
HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /12860001
Content-Length: 0

</data1000>
<data1001>
HTTP/1.1 404 Not Found
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Content-Length: 0

</data>
<data1000>
HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /%TESTNUMBER0001
Content-Length: 0

</data1000>
<data1001>
HTTP/1.1 404 Not Found
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
WWW-Authenticate: Digest realm="testrealm", nonce="1053604144", qop="auth"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0

HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /12860001
Content-Length: 0

HTTP/1.1 404 Not Found
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0








|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
WWW-Authenticate: Digest realm="testrealm", nonce="1053604144", qop="auth"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0

HTTP/1.1 302 Thanks for this, but we want to redir you!
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Location: /%TESTNUMBER0001
Content-Length: 0

HTTP/1.1 404 Not Found
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
</features>
<name>
HTTP GET --digest increasing nonce-count
</name>
# This test is to ensure the nonce-count (nc) increases
# https://github.com/curl/curl/pull/1251
<command>
-u auser:apasswd --location --digest http://%HOSTIP:%HTTPPORT/1286
</command>
</client>

# Verify data after the test has been "shot"
<verify>

# Reorder the fields in 'Authorization: Digest' header.
# Since regular and SSPI digest auth header fields may not have the same order
# or whitespace we homogenize so that both may be tested. Also:
# - Remove the unique value from cnonce if in RFC format
# - Remove the unique value from response if in RFC format
# - Remove quotes from qop="auth" used by SSPI
# The if statement is one line because runtests evaluates one line at a time.
<strippart>
if(s/^(Authorization: Digest )([^\r\n]+)(\r?\n)$//) { $_ = $1 . join(', ', map { s/^(cnonce=)"[a-zA-Z0-9+\/=]+"$/$1REMOVED/; s/^(response=)"[a-f0-9]{32}"$/$1REMOVED/; s/^qop="auth"$/qop=auth/; $_ } sort split(/, */, $2)) . $3; }
</strippart>
<protocol>
GET /1286 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1286 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest cnonce=REMOVED, nc=00000001, nonce="1053604144", qop=auth, realm="testrealm", response=REMOVED, uri="/1286", username="auser"
User-Agent: curl/%VERSION
Accept: */*

GET /12860001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest cnonce=REMOVED, nc=00000002, nonce="1053604144", qop=auth, realm="testrealm", response=REMOVED, uri="/12860001", username="auser"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

















|




|

|



|

|






67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
</features>
<name>
HTTP GET --digest increasing nonce-count
</name>
# This test is to ensure the nonce-count (nc) increases
# https://github.com/curl/curl/pull/1251
<command>
-u auser:apasswd --location --digest http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>

# Reorder the fields in 'Authorization: Digest' header.
# Since regular and SSPI digest auth header fields may not have the same order
# or whitespace we homogenize so that both may be tested. Also:
# - Remove the unique value from cnonce if in RFC format
# - Remove the unique value from response if in RFC format
# - Remove quotes from qop="auth" used by SSPI
# The if statement is one line because runtests evaluates one line at a time.
<strippart>
if(s/^(Authorization: Digest )([^\r\n]+)(\r?\n)$//) { $_ = $1 . join(', ', map { s/^(cnonce=)"[a-zA-Z0-9+\/=]+"$/$1REMOVED/; s/^(response=)"[a-f0-9]{32}"$/$1REMOVED/; s/^qop="auth"$/qop=auth/; $_ } sort split(/, */, $2)) . $3; }
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest cnonce=REMOVED, nc=00000001, nonce="1053604144", qop=auth, realm="testrealm", response=REMOVED, uri="/%TESTNUMBER", username="auser"
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest cnonce=REMOVED, nc=00000002, nonce="1053604144", qop=auth, realm="testrealm", response=REMOVED, uri="/%TESTNUMBER0001", username="auser"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1287.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

<datacheck>
HTTP/1.1 200 Mighty fine indeed
Content-Length: 123
Transfer-Encoding: chunked

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
<name>
HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses
</name>
<command>
-v --proxytunnel -x %HOSTIP:%PROXYPORT http://test.1287:%HTTPPORT/we/want/that/page/1287
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.1287:%HTTPPORT HTTP/1.1
Host: test.1287:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/1287 HTTP/1.1
Host: test.1287:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/stderr1287" mode="text">
* Ignoring Content-Length in CONNECT 200 response
* Ignoring Transfer-Encoding in CONNECT 200 response
</file>
<stripfile>
s/^.*(?=\* Ignoring (?:Content-Length|Transfer-Encoding) )// or $_ = ''
</stripfile>
</verify>
</testcase>







|




















|










|
|





|
|




|








33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

<datacheck>
HTTP/1.1 200 Mighty fine indeed
Content-Length: 123
Transfer-Encoding: chunked

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
<name>
HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses
</name>
<command>
-v --proxytunnel -x %HOSTIP:%PROXYPORT http://test.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/stderr%TESTNUMBER" mode="text">
* Ignoring Content-Length in CONNECT 200 response
* Ignoring Transfer-Encoding in CONNECT 200 response
</file>
<stripfile>
s/^.*(?=\* Ignoring (?:Content-Length|Transfer-Encoding) )// or $_ = ''
</stripfile>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1288.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
HTTP/1.1 200 Mighty fine indeed
Server: test tunnel 2000

</connect>

<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
HTTP/1.1 200 Mighty fine indeed
Server: test tunnel 2000

</connect>

<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive

contents
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
http
http-proxy
</server>
<name>
Suppress proxy CONNECT response headers
</name>
<command>
--proxytunnel --suppress-connect-headers --dump-header - --include --write-out "\nCONNECT CODE: %{http_connect}\nRECEIVED HEADER BYTE TOTAL: %{size_header}\n" --proxy %HOSTIP:%PROXYPORT http://%HOSTIP.1288:%HTTPPORT/we/want/that/page/1288
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT %HOSTIP.1288:%HTTPPORT HTTP/1.1
Host: %HOSTIP.1288:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/1288 HTTP/1.1
Host: %HOSTIP.1288:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# This test is structured to test all the expectations of
# --suppress-connect-headers, which are:
# Must suppress in --include and --dump-header
# Must not suppress in --verbose and --trace
# Must not suppress in statistics (eg received header byte total)
<stdout>
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Server: test-server/fake
Content-Type: text/html
Content-Type: text/html
Funny-head: yesyes
Funny-head: yesyes
Content-Length: 9







|










|
|





|
|













|
|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
http
http-proxy
</server>
<name>
Suppress proxy CONNECT response headers
</name>
<command>
--proxytunnel --suppress-connect-headers --dump-header - --include --write-out "\nCONNECT CODE: %{http_connect}\nRECEIVED HEADER BYTE TOTAL: %{size_header}\n" --proxy %HOSTIP:%PROXYPORT http://%HOSTIP.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT %HOSTIP.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: %HOSTIP.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# This test is structured to test all the expectations of
# --suppress-connect-headers, which are:
# Must suppress in --include and --dump-header
# Must not suppress in --verbose and --trace
# Must not suppress in statistics (eg received header byte total)
<stdout>
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Server: test-server/fake
Content-Type: text/html
Content-Type: text/html
Funny-head: yesyes
Funny-head: yesyes
Content-Length: 9
Changes to jni/curl/tests/data/test129.
1
2
3
4
5
6
7
8
9
10


11
12
13
14
15
16

17




18
19


20
21
22
23
24
25

26
27
28
29
30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47
48
49
50




51
52
<testcase>
<info>
<keywords>
FTP
EPSV
TYPE A
RETR
type=
</keywords>
</info>


# Server-side
<reply>
<size>
37
</size>
<data>

data




    to
      see


that FTP
works
  so does it?
</data>
</reply>


# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP GET with type=A style ASCII URL and understated server SIZE
 </name>
 <command>
"ftp://%HOSTIP:%FTPPORT/129;type=A"
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
SIZE 129
RETR 129
QUIT
</protocol>




</verify>
</testcase>



|
<
<
|
<


>
>


<
<
<
|
>
|
>
>
>
>
|
|
>
>
|
|
<



>



|


|


|



>



|
|
<
<
<
|
|
|

>
>
>
>


1
2
3
4


5

6
7
8
9
10
11



12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47



48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP


HTTP GET

</keywords>
</info>

#
# Server-side
<reply>



<data nocheck="yes">
HTTP/1.2 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP/1.2 is rejected
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT



User-Agent: curl/%VERSION
Accept: */*

</protocol>
# CURLE_UNSUPPORTED_PROTOCOL
<errorcode>
1
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1290.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
<name>
Verify URL globbing ignores []
</name>
<command>
"http://%HOSTIP:%HTTPPORT/we/want/[]/page/1290"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/[]/page/1290 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
<name>
Verify URL globbing ignores []
</name>
<command>
"http://%HOSTIP:%HTTPPORT/we/want/[]/page/%TESTNUMBER"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/[]/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1291.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
none
</server>
<name>
Attempt to upload 1000 files but fail immediately
</name>
<command>
-K log/cmd1291 --fail-early
</command>
<file name="log/upload-this">
XXXXXXXx
</file>
# generate the config file
<precheck>
perl -e 'for(1 .. 1000) { printf("upload-file=log/upload-this\nurl=htttttp://non-existing-host.haxx.se/upload/1291\n", $_);}' > log/cmd1291;
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
1







|






|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
none
</server>
<name>
Attempt to upload 1000 files but fail immediately
</name>
<command>
-K log/cmd%TESTNUMBER --fail-early
</command>
<file name="log/upload-this">
XXXXXXXx
</file>
# generate the config file
<precheck>
perl -e 'for(1 .. 1000) { printf("upload-file=log/upload-this\nurl=htttttp://non-existing-host.haxx.se/upload/%TESTNUMBER\n", $_);}' > log/cmd%TESTNUMBER;
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
1
Changes to jni/curl/tests/data/test1292.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Replaced internal headers with a blank one
 </name>
 <command>
 -H "Host;" -H "Accept;" http://%HOSTIP:%HTTPPORT/1292
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1292 HTTP/1.1
Host:
User-Agent: curl/%VERSION
Accept:

</protocol>
</verify>
</testcase>







|

















|







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Replaced internal headers with a blank one
 </name>
 <command>
 -H "Host;" -H "Accept;" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host:
User-Agent: curl/%VERSION
Accept:

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1293.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
Multipart formpost to two URLs, the first failing
 </name>
 <command>
http://0 http://%HOSTIP:%HTTPPORT/1293 -F=
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /1293 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 126
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------







|











|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
Multipart formpost to two URLs, the first failing
 </name>
 <command>
http://0 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -F=
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 126
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Changes to jni/curl/tests/data/test1294.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<setenv>
# Oliver Twist

# make the first send cut off after this amount of data
CURL_SMALLREQSEND=128
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/1294 -H "Among other public buildings in a certain town, which for many reasons it will be prudent to refrain from mentioning, and to which I will assign no fictitious name, there is one anciently common to most towns, great or small to wit, a workhouse; and in this workhouse was born; on a day and date which I need not trouble myself to repeat, inasmuch as it can be of no possible consequence to the reader, in this stage of the business at all events; the item of mortality whose name is prefixed to the head of this chapter: 511"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/1294 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Among other public buildings in a certain town, which for many reasons it will be prudent to refrain from mentioning, and to which I will assign no fictitious name, there is one anciently common to most towns, great or small to wit, a workhouse; and in this workhouse was born; on a day and date which I need not trouble myself to repeat, inasmuch as it can be of no possible consequence to the reader, in this stage of the business at all events; the item of mortality whose name is prefixed to the head of this chapter: 511

</protocol>
</verify>
</testcase>







|







|








40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<setenv>
# Oliver Twist

# make the first send cut off after this amount of data
CURL_SMALLREQSEND=128
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/%TESTNUMBER -H "Among other public buildings in a certain town, which for many reasons it will be prudent to refrain from mentioning, and to which I will assign no fictitious name, there is one anciently common to most towns, great or small to wit, a workhouse; and in this workhouse was born; on a day and date which I need not trouble myself to repeat, inasmuch as it can be of no possible consequence to the reader, in this stage of the business at all events; the item of mortality whose name is prefixed to the head of this chapter: 511"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Among other public buildings in a certain town, which for many reasons it will be prudent to refrain from mentioning, and to which I will assign no fictitious name, there is one anciently common to most towns, great or small to wit, a workhouse; and in this workhouse was born; on a day and date which I need not trouble myself to repeat, inasmuch as it can be of no possible consequence to the reader, in this stage of the business at all events; the item of mortality whose name is prefixed to the head of this chapter: 511

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1295.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<setenv>
# The Hound of the Baskervilles
#
# make the first send cut off after this amount of data
CURL_SMALLREQSEND=100
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/1295 -H "012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679: 300" -d "Mr. Sherlock Holmes, who was usually very late in the mornings, save upon those not infrequent occasions when he was up all night, was seated at the breakfast table." -w '%{size_upload}\n'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/1295 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679: 300
Content-Length: 165
Content-Type: application/x-www-form-urlencoded

Mr. Sherlock Holmes, who was usually very late in the mornings, save upon those not infrequent occasions when he was up all night, was seated at the breakfast table.
</protocol>
<stdout>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







|











|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<setenv>
# The Hound of the Baskervilles
#
# make the first send cut off after this amount of data
CURL_SMALLREQSEND=100
</setenv>
<command>
http://%HOSTIP:%HTTPPORT/012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/%TESTNUMBER -H "012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679: 300" -d "Mr. Sherlock Holmes, who was usually very late in the mornings, save upon those not infrequent occasions when he was up all night, was seated at the breakfast table." -w '%{size_upload}\n'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679012345679: 300
Content-Length: 165
Content-Type: application/x-www-form-urlencoded

Mr. Sherlock Holmes, who was usually very late in the mornings, save upon those not infrequent occasions when he was up all night, was seated at the breakfast table.
</protocol>
<stdout>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Changes to jni/curl/tests/data/test1296.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP Basic
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP Basic
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</server>

<name>
HTTP URL with %0a in name part
</name>

<command>
http://user%0aname:password@%HOSTIP:%HTTPPORT/1296
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1296 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcgpuYW1lOnBhc3N3b3Jk
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>








|






|









31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</server>

<name>
HTTP URL with %0a in name part
</name>

<command>
http://user%0aname:password@%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcgpuYW1lOnBhc3N3b3Jk
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>

Changes to jni/curl/tests/data/test1297.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
http
http-proxy
</server>
<name>
CONNECT to peer that returns nothing
</name>
<command>
--proxytunnel --proxy %HOSTIP:%PROXYPORT http://%HOSTIP.1297:%HTTPPORT/we/want/that/page/1297
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT %HOSTIP.1297:%HTTPPORT HTTP/1.1
Host: %HOSTIP.1297:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/1297 HTTP/1.1
Host: %HOSTIP.1297:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 52 - got nothing
<errorcode>
52







|










|
|





|
|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
http
http-proxy
</server>
<name>
CONNECT to peer that returns nothing
</name>
<command>
--proxytunnel --proxy %HOSTIP:%PROXYPORT http://%HOSTIP.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT %HOSTIP.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: %HOSTIP.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 52 - got nothing
<errorcode>
52
Changes to jni/curl/tests/data/test1298.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP GET special path with --request-target
 </name>
 <command>
--request-target "XXX" "http://%HOSTIP:%HTTPPORT/" -H "Testno: 1298"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET XXX HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: 1298

</protocol>
</verify>
</testcase>







|











|




31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP GET special path with --request-target
 </name>
 <command>
--request-target "XXX" "http://%HOSTIP:%HTTPPORT/" -H "Testno: %TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET XXX HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: %TESTNUMBER

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1299.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
--request-target
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
--request-target
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
Send "OPTIONS *" with --request-target
 </name>
 <command>
--request-target '*' -X OPTIONS http://%HOSTIP:%HTTPPORT/ -H "Testno: 1299"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
OPTIONS * HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: 1299

</protocol>
</verify>
</testcase>







|











|




30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
Send "OPTIONS *" with --request-target
 </name>
 <command>
--request-target '*' -X OPTIONS http://%HOSTIP:%HTTPPORT/ -H "Testno: %TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
OPTIONS * HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: %TESTNUMBER

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test13.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
http
</server>
 <name>
HTTP custom request 'DELETE'
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/13 -X DELETE
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
DELETE /want/13 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
http
</server>
 <name>
HTTP custom request 'DELETE'
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -X DELETE
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
DELETE /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test130.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (optional .netrc; no user/pass) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc130 ftp://%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc130" >
# the following two lines were created while testing curl
# machine %HOSTIP login user1 password commented
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
default login userdef password passwddef
</file>
</client>







|

|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (optional .netrc; no user/pass) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER ftp://%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
# the following two lines were created while testing curl
# machine %HOSTIP login user1 password commented
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
default login userdef password passwddef
</file>
</client>
Changes to jni/curl/tests/data/test1304.
14
15
16
17
18
19
20
21
22
23
24
25
26
</server>
<features>
unittest
</features>
 <name>
netrc parsing unit tests
 </name>
<file name="log/netrc1304">
machine example.com login admin password passwd
machine curl.example.com login none password none
</file>
</client>
</testcase>







|





14
15
16
17
18
19
20
21
22
23
24
25
26
</server>
<features>
unittest
</features>
 <name>
netrc parsing unit tests
 </name>
<file name="log/netrc%TESTNUMBER">
machine example.com login admin password passwd
machine curl.example.com login none password none
</file>
</client>
</testcase>
Changes to jni/curl/tests/data/test1305.
16
17
18
19
20
21
22
23

24
25
26
<features>
unittest
</features>
 <name>
internal hash create/destroy testing
 </name>
<command>
1305

</command>
</client>
</testcase>







<
>



16
17
18
19
20
21
22

23
24
25
26
<features>
unittest
</features>
 <name>
internal hash create/destroy testing
 </name>
<command>

%TESTNUMBER
</command>
</client>
</testcase>
Changes to jni/curl/tests/data/test1306.
19
20
21
22
23
24
25
26

27
28
29
30
 <name>
internal hash create/add/destroy testing
 </name>
<tool>
unit1305
</tool>
<command>
1306

</command>
</client>

</testcase>







<
>




19
20
21
22
23
24
25

26
27
28
29
30
 <name>
internal hash create/add/destroy testing
 </name>
<tool>
unit1305
</tool>
<command>

%TESTNUMBER
</command>
</client>

</testcase>
Changes to jni/curl/tests/data/test1308.
16
17
18
19
20
21
22
23
24
25
26
27
<features>
unittest
http
</features>
 <name>
formpost unit tests
 </name>
<file name="log/test-1308">
Piece of the file that is to uploaded as a formpost
</file>
</client>
</testcase>







|




16
17
18
19
20
21
22
23
24
25
26
27
<features>
unittest
http
</features>
 <name>
formpost unit tests
 </name>
<file name="log/test-%TESTNUMBER">
Piece of the file that is to uploaded as a formpost
</file>
</client>
</testcase>
Changes to jni/curl/tests/data/test131.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP (optional .netrc; user/no pass) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc131 ftp://user2@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc131" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#







|

|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP (optional .netrc; user/no pass) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER ftp://user2@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#
Changes to jni/curl/tests/data/test1310.
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
# set path to fake_auth instead of real ntlm_auth to generate NTLM type1 and type 3 messages
CURL_NTLM_WB_FILE=%PWD/server/fake_ntlm
# set source directory so fake_ntlm can find the test files
CURL_NTLM_AUTH_SRCDIR=%SRCDIR
# set the test number
CURL_NTLM_AUTH_TESTNUM=1310
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/1310 -u testuser:anypasswd --ntlm-wb
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1310 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAA
User-Agent: curl/%VERSION
Accept: */*

GET /1310 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAE8AAAAYABgAZwAAAAAAAABAAAAACAAIAEAAAAAHAAcASAAAAAAAAAAAAAAAggEAAHRlc3R1c2VyVU5LTk9XTlpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|


|









|





|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
# set path to fake_auth instead of real ntlm_auth to generate NTLM type1 and type 3 messages
CURL_NTLM_WB_FILE=%PWD/server/fake_ntlm
# set source directory so fake_ntlm can find the test files
CURL_NTLM_AUTH_SRCDIR=%SRCDIR
# set the test number
CURL_NTLM_AUTH_TESTNUM=%TESTNUMBER
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:anypasswd --ntlm-wb
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAA
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAE8AAAAYABgAZwAAAAAAAABAAAAACAAIAEAAAAAHAAcASAAAAAAAAAAAAAAAggEAAHRlc3R1c2VyVU5LTk9XTlpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test1311.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1311; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side













|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -J and Content-Disposition
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1311 -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1311 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/name1311">
12345
</file>

</verify>
</testcase>







|







|





|





36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -J and Content-Disposition
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/name%TESTNUMBER">
12345
</file>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1312.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: inline; filename="name1312;weird"

12345
</data>
</reply>

#
# Client-side













|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: inline; filename="name%TESTNUMBER;weird"

12345
</data>
</reply>

#
# Client-side
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -J, Content-Disposition and ; in filename
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
%HOSTIP:%HTTPPORT/1312 -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1312 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/name1312;weird">
12345
</file>

</verify>
</testcase>







|







|





|





36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -J, Content-Disposition and ; in filename
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/name%TESTNUMBER;weird">
12345
</file>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1313.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: inline; filename='name1313

12345
</data>
</reply>

#
# Client-side













|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: inline; filename='name%TESTNUMBER

12345
</data>
</reply>

#
# Client-side
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -J, Content-Disposition, uneven quotes
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1313 -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1313 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/name1313">
12345
</file>

</verify>
</testcase>







|







|





|





36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -J, Content-Disposition, uneven quotes
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/name%TESTNUMBER">
12345
</file>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1314.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsbounce
Server: test-server/fake
Location: //somewhere.example.com/reply/1314
Content-Length: 32
Connection: close

Redirect to the same URL again!
</data>

<data1>
HTTP/1.1 200 okidoki
Server: test-server/fake
Content-Length: 4
Connection: close

moo
</data1>

<datacheck>
HTTP/1.1 301 This is a weirdo text message swsbounce
Server: test-server/fake
Location: //somewhere.example.com/reply/1314
Content-Length: 32
Connection: close

HTTP/1.1 200 okidoki
Server: test-server/fake
Content-Length: 4
Connection: close







|


















|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsbounce
Server: test-server/fake
Location: //somewhere.example.com/reply/%TESTNUMBER
Content-Length: 32
Connection: close

Redirect to the same URL again!
</data>

<data1>
HTTP/1.1 200 okidoki
Server: test-server/fake
Content-Length: 4
Connection: close

moo
</data1>

<datacheck>
HTTP/1.1 301 This is a weirdo text message swsbounce
Server: test-server/fake
Location: //somewhere.example.com/reply/%TESTNUMBER
Content-Length: 32
Connection: close

HTTP/1.1 200 okidoki
Server: test-server/fake
Content-Length: 4
Connection: close
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<server>
http
</server>
 <name>
HTTP Location: following a // prefixed url
 </name>
 <command>
http://firstplace.example.com/want/1314 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://firstplace.example.com/want/1314 HTTP/1.1
Host: firstplace.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://somewhere.example.com/reply/1314 HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|









|





|








50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<server>
http
</server>
 <name>
HTTP Location: following a // prefixed url
 </name>
 <command>
http://firstplace.example.com/want/%TESTNUMBER -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://firstplace.example.com/want/%TESTNUMBER HTTP/1.1
Host: firstplace.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://somewhere.example.com/reply/%TESTNUMBER HTTP/1.1
Host: somewhere.example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1315.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting - -F with three files, one with explicit type
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1315 -F name=value -F 'file=@log/test1315.txt,log/test1315.txt;type=magic/content,log/test1315.txt'
</command>
# We create this file before the command is invoked!
<file name="log/test1315.txt">
dummy data
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
-----+\w+
</strip>
<protocol>
POST /we/want/1315 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 797
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

value
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"
Content-Type: multipart/mixed; boundary=----------------------------aaaaaaaaaaaa

Content-Disposition: attachment; filename="test1315.txt"
Content-Type: text/plain

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test1315.txt"
Content-Type: magic/content

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test1315.txt"
Content-Type: text/plain

dummy data

------------------------------aaaaaaaaaaaa--

------------------------------9ef8d6205763--
</protocol>
</verify>
</testcase>







|


|










|














|





|





|










25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting - -F with three files, one with explicit type
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F name=value -F 'file=@log/test%TESTNUMBER.txt,log/test%TESTNUMBER.txt;type=magic/content,log/test%TESTNUMBER.txt'
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
dummy data
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
-----+\w+
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 797
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

value
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"
Content-Type: multipart/mixed; boundary=----------------------------aaaaaaaaaaaa

Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Type: magic/content

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

dummy data

------------------------------aaaaaaaaaaaa--

------------------------------9ef8d6205763--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1316.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<features>
http
</features>
 <name>
FTP LIST tunneled through HTTP proxy
 </name>
 <command>
ftp://ftp.1316:%FTPPORT/ -p -x %HOSTIP:%PROXYPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>







|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<features>
http
</features>
 <name>
FTP LIST tunneled through HTTP proxy
 </name>
 <command>
ftp://ftp.%TESTNUMBER:%FTPPORT/ -p -x %HOSTIP:%PROXYPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
Changes to jni/curl/tests/data/test1317.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
<name>
HTTP with --resolve
</name>
<command>
--resolve example.com:%HTTPPORT:%HOSTIP http://example.com:%HTTPPORT/1317
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1317 HTTP/1.1
Host: example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
<name>
HTTP with --resolve
</name>
<command>
--resolve example.com:%HTTPPORT:%HOSTIP http://example.com:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1318.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

</data>
<data1>
HTTP/1.1 200 second version
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with --resolve and same host name using different cases
 </name>
 <command>
--resolve MiXeDcAsE.cOm:%HTTPPORT:%HOSTIP http://MiXeDcAsE.cOm:%HTTPPORT/1318 http://mixedcase.com:%HTTPPORT/13180001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1318 HTTP/1.1
Host: MiXeDcAsE.cOm:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /13180001 HTTP/1.1
Host: mixedcase.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|
















|







|




|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

</data>
<data1>
HTTP/1.1 200 second version
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with --resolve and same host name using different cases
 </name>
 <command>
--resolve MiXeDcAsE.cOm:%HTTPPORT:%HOSTIP http://MiXeDcAsE.cOm:%HTTPPORT/%TESTNUMBER http://mixedcase.com:%HTTPPORT/%TESTNUMBER0001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: MiXeDcAsE.cOm:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: mixedcase.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1319.
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
http
proxy
</features>
 <name>
POP3 fetch tunneled through HTTP proxy
 </name>
 <command>
pop3://pop.1319:%POP3PORT/1319 -p -x %HOSTIP:%PROXYPORT -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
RETR 1319
QUIT
</protocol>
<proxy>
CONNECT pop.1319:%POP3PORT HTTP/1.1
Host: pop.1319:%POP3PORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>







|










|



|
|






52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
http
proxy
</features>
 <name>
POP3 fetch tunneled through HTTP proxy
 </name>
 <command>
pop3://pop.%TESTNUMBER:%POP3PORT/%TESTNUMBER -p -x %HOSTIP:%PROXYPORT -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
RETR %TESTNUMBER
QUIT
</protocol>
<proxy>
CONNECT pop.%TESTNUMBER:%POP3PORT HTTP/1.1
Host: pop.%TESTNUMBER:%POP3PORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>
Changes to jni/curl/tests/data/test132.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (optional .netrc; user/passwd supplied) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc132 ftp://mary:mark@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc132" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#







|

|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (optional .netrc; user/passwd supplied) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER ftp://mary:mark@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#
Changes to jni/curl/tests/data/test1320.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://smtp.1320:%SMTPPORT/1320 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - -p -x %HOSTIP:%PROXYPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 1320
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
To: another

body
.
</upload>
<proxy>
CONNECT smtp.1320:%SMTPPORT HTTP/1.1
Host: smtp.1320:%SMTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>







|







|













|
|






35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://smtp.%TESTNUMBER:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T - -p -x %HOSTIP:%PROXYPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
To: another

body
.
</upload>
<proxy>
CONNECT smtp.%TESTNUMBER:%SMTPPORT HTTP/1.1
Host: smtp.%TESTNUMBER:%SMTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1321.
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
http
proxy
</features>
 <name>
IMAP FETCH tunneled through HTTP proxy
 </name>
 <command>
'imap://imap.1321:%IMAPPORT/1321/;MAILINDEX=1' -u user:secret -p -x %HOSTIP:%PROXYPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 1321
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
<proxy>
CONNECT imap.1321:%IMAPPORT HTTP/1.1
Host: imap.1321:%IMAPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>







|









|




|
|






48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
http
proxy
</features>
 <name>
IMAP FETCH tunneled through HTTP proxy
 </name>
 <command>
'imap://imap.%TESTNUMBER:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret -p -x %HOSTIP:%PROXYPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
<proxy>
CONNECT imap.%TESTNUMBER:%IMAPPORT HTTP/1.1
Host: imap.%TESTNUMBER:%IMAPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1322.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
<name>
HTTP with --resolve and hostname with trailing dot
</name>
<command>
--ipv4 --resolve example.com.:%HTTPPORT:%HOSTIP http://example.com.:%HTTPPORT/1322
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1322 HTTP/1.1
Host: example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
<name>
HTTP with --resolve and hostname with trailing dot
</name>
<command>
--ipv4 --resolve example.com.:%HTTPPORT:%HOSTIP http://example.com.:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1324.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http-ipv6
</server>
<name>
HTTP with --resolve and [ipv6address]
</name>
<command>
--resolve example.com:%HTTP6PORT:%HOST6IP http://example.com:%HTTP6PORT/1324
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1324 HTTP/1.1
Host: example.com:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http-ipv6
</server>
<name>
HTTP with --resolve and [ipv6address]
</name>
<command>
--resolve example.com:%HTTP6PORT:%HOST6IP http://example.com:%HTTP6PORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: example.com:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1325.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 308 OK swsclose
Location: 13250002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 308 OK swsclose
Location: 13250002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 308-redirect with POST
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/1325 -L -d "moo"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /we/1325 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /we/13250002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>







|
|






|






|
|




|
















|







|






|










9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 308 OK swsclose
Location: %TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 308 OK swsclose
Location: %TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 308-redirect with POST
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/%TESTNUMBER -L -d "moo"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /we/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /we/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1326.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<features>
telnet
</features>
 <name>
TELNET to HTTP server
 </name>
<stdin>
GET /we/want/1326 HTTP/1.0

</stdin>
 <command>
telnet://%HOSTIP:%HTTPPORT --upload-file -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1326 HTTP/1.0

</protocol>
</verify>
</testcase>







|











|




25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<features>
telnet
</features>
 <name>
TELNET to HTTP server
 </name>
<stdin>
GET /we/want/%TESTNUMBER HTTP/1.0

</stdin>
 <command>
telnet://%HOSTIP:%HTTPPORT --upload-file -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1327.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<features>
telnet
</features>
 <name>
TELNET check of upload with stdout redirected
 </name>
<stdin>
GET /ignore/for/1327 HTTP/1.0

</stdin>
<file name="log/1327.txt">
GET /we/want/1327 HTTP/1.0

</file>
 <command option="no-output">
telnet://%HOSTIP:%HTTPPORT -T log/1327.txt
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1327 HTTP/1.0

</protocol>
</verify>
</testcase>







|


|
|



|







|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<features>
telnet
</features>
 <name>
TELNET check of upload with stdout redirected
 </name>
<stdin>
GET /ignore/for/%TESTNUMBER HTTP/1.0

</stdin>
<file name="log/%TESTNUMBER.txt">
GET /we/want/%TESTNUMBER HTTP/1.0

</file>
 <command option="no-output">
telnet://%HOSTIP:%HTTPPORT -T log/%TESTNUMBER.txt
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1328.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP GET
globbing
--fail
</keywords>
</info>

<reply>
<data>
HTTP/1.1 404 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Funny-head: yesyes

-noo-
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Funny-head: yesyes

-yes-
</data1>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Funny-head: yesyes

-yes-
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET a globbed range with -f
 </name>
 <command>
-f 'http://%HOSTIP:%HTTPPORT/[13280000-13280001]' -o log/#1
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /13280000 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /13280001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|







|








|


















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP GET
globbing
--fail
</keywords>
</info>

<reply>
<data>
HTTP/1.1 404 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Funny-head: yesyes

-noo-
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Funny-head: yesyes

-yes-
</data1>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Funny-head: yesyes

-yes-
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET a globbed range with -f
 </name>
 <command>
-f 'http://%HOSTIP:%HTTPPORT/[%TESTNUMBER0000-%TESTNUMBER0001]' -o log/#1
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0000 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1329.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
http
</server>
 <name>
/-prefixed proxy name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/1329 -x "/server"
</command>
<features>
proxy
</features>
</client>

#







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
http
</server>
 <name>
/-prefixed proxy name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER -x "/server"
</command>
<features>
proxy
</features>
</client>

#
Changes to jni/curl/tests/data/test133.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (compulsory .netrc; ignored user/passwd) dir list PASV
 </name>
 <command>
-n --netrc-file log/netrc133 ftp://mary:mark@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc133" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#







|

|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (compulsory .netrc; ignored user/passwd) dir list PASV
 </name>
 <command>
-n --netrc-file log/netrc%TESTNUMBER ftp://mary:mark@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#
Changes to jni/curl/tests/data/test1330.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/memdump">
MEM unit1330.c: malloc()
MEM unit1330.c: free()
</file>
<stripfile>
s/ =.*//
s/\(.*\)/()/
s/:\d+/:/
s:^(MEM )(.*/)(.*):$1$3:
s/\r\n/\n/







|
|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/memdump">
MEM unit%TESTNUMBER.c: malloc()
MEM unit%TESTNUMBER.c: free()
</file>
<stripfile>
s/ =.*//
s/\(.*\)/()/
s/:\d+/:/
s:^(MEM )(.*/)(.*):$1$3:
s/\r\n/\n/
Changes to jni/curl/tests/data/test1331.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<server>
http
</server>
 <name>
HTTP --proxy-anyauth and 407 with cookies
 </name>
 <command>
-U myname:mypassword -x %HOSTIP:%HTTPPORT http://z.x.com/1331 --proxy-anyauth -c log/dump1331
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://z.x.com/1331 HTTP/1.1
Host: z.x.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://z.x.com/1331 HTTP/1.1
Host: z.x.com
Proxy-Authorization: Basic bXluYW1lOm15cGFzc3dvcmQ=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: proxycookie=weirdo








|









|





|







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<server>
http
</server>
 <name>
HTTP --proxy-anyauth and 407 with cookies
 </name>
 <command>
-U myname:mypassword -x %HOSTIP:%HTTPPORT http://z.x.com/%TESTNUMBER --proxy-anyauth -c log/dump%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://z.x.com/%TESTNUMBER HTTP/1.1
Host: z.x.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://z.x.com/%TESTNUMBER HTTP/1.1
Host: z.x.com
Proxy-Authorization: Basic bXluYW1lOm15cGFzc3dvcmQ=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: proxycookie=weirdo

Changes to jni/curl/tests/data/test1332.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/13320002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/13320002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 303 redirect and --post303
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/1332 -L -d "moo" --post303
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/1332 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /blah/moo.html&testcase=/13320002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>







|
|






|






|
|




|
















|







|






|










8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST with 303 redirect and --post303
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/%TESTNUMBER -L -d "moo" --post303
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /blah/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooPOST /blah/moo.html&testcase=/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

moo
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1333.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Accept-Ranges: bytes
Content-Length: 6
Connection: close

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST zero length, chunked-encoded
 </name>
 <command>
-d "" --header "Transfer-Encoding: chunked" http://%HOSTIP:%HTTPPORT/1333
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /1333 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded

0

</protocol>
</verify>
</testcase>







|


















|







|











8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Accept-Ranges: bytes
Content-Length: 6
Connection: close

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP POST zero length, chunked-encoded
 </name>
 <command>
-d "" --header "Transfer-Encoding: chunked" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded

0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1334.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<name>
HTTP GET with -O without Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1334 -O -D log/heads1334
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1334 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1334">
12345
</file1>

<file2 name="log/heads1334">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout1334">
</file3>

</verify>
</testcase>







|







|






|



|

|







|




34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<name>
HTTP GET with -O without Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -O -D log/heads%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1335.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<name>
HTTP GET with -O without Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1335 -O -D -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1335 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1335">
12345
</file1>

<file2 name="log/stdout1335">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>







|







|






|



|

|









34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<name>
HTTP GET with -O without Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -O -D -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1336.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1336; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side












|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
HTTP GET with -O and Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1336 -O -D log/heads1336
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1336
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1336 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1336">
12345
</file1>

<file2 name="log/heads1336">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1336; charset=funny; option=strange

</file2>

<file3 name="log/stdout1336">
</file3>

</verify>
</testcase>







|


|







|






|



|

|




|



|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
HTTP GET with -O and Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -O -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1337.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1337; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side












|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<name>
HTTP GET with -O and Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1337 -O -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1337
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1337 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1337">
12345
</file1>

<file2 name="log/stdout1337">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1337; charset=funny; option=strange

</file2>

</verify>
</testcase>







|


|







|






|



|

|




|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<name>
HTTP GET with -O and Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -O -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1338.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<name>
HTTP GET with -O -J without Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1338 -J -O -D log/heads1338
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1338 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1338">
12345
</file1>

<file2 name="log/heads1338">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout1338">
</file3>

</verify>
</testcase>







|







|






|



|

|







|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<name>
HTTP GET with -O -J without Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O -D log/heads%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1339.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<name>
HTTP GET with -O -J without Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1339 -J -O -D -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1339 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1339">
12345
</file1>

<file2 name="log/stdout1339">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>







|







|






|



|

|









35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<name>
HTTP GET with -O -J without Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O -D -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test134.
29
30
31
32
33
34
35
36
37
38


39
40
41
42
43
44
45
46
47
48
49

#
# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP (optional .netrc; programmatic user/passwd) dir list PASV
 </name>


 <command>
--netrc-optional --netrc-file log/netrc134 -u romulus:rhemus ftp://mary:mark@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc134" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#







|

|
>
>
|
|

|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

#
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP (optional .netrc; programmatic user/passwd) dir list PASV
</name>

# -u overrides netrc which overrides the URL
<command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER -u romulus:rhemus ftp://mary:mark@%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#
Changes to jni/curl/tests/data/test1340.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1340; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side













|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<name>
HTTP GET with -O -J and Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1340 -J -O -D log/heads1340 -w "curl: Saved to filename %{filename_effective}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1340 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/name1340">
12345
</file1>

<file2 name="log/heads1340">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1340; charset=funny; option=strange

</file2>

<file3 name="log/stdout1340" mode="text">
curl: Saved to filename %PWD/log/name1340
</file3>

</verify>
</testcase>







|







|






|



|

|




|



|
|




36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<name>
HTTP GET with -O -J and Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O -D log/heads%TESTNUMBER -w "curl: Saved to filename %{filename_effective}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/name%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

<file3 name="log/stdout%TESTNUMBER" mode="text">
curl: Saved to filename %PWD/log/name%TESTNUMBER
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1341.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1341; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side













|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<name>
HTTP GET with -O -J and Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1341 -J -O -D - -w "curl: Saved to filename %{filename_effective}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1341 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/name1341">
12345
</file1>

<file2 name="log/stdout1341">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1341; charset=funny; option=strange

curl: Saved to filename %PWD/log/name1341
</file2>

</verify>
</testcase>







|







|






|



|

|




|

|




36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<name>
HTTP GET with -O -J and Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O -D - -w "curl: Saved to filename %{filename_effective}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/name%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

curl: Saved to filename %PWD/log/name%TESTNUMBER
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1342.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<name>
HTTP GET with -O -i without Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1342 -i -O -D log/heads1342
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1342 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1342">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/heads1342">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout1342">
</file3>

</verify>
</testcase>







|







|






|

|








|

|







|




34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<name>
HTTP GET with -O -i without Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -O -D log/heads%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1343.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<name>
HTTP GET with -O -i without Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1343 -i -O -D -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1343 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1343">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout1343">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>







|







|






|

|








|

|









34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<name>
HTTP GET with -O -i without Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -O -D -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1344.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1344; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side












|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<name>
HTTP GET with -O -i and Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1344 -i -O -D log/heads1344
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1344
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1344 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1344">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1344; charset=funny; option=strange

12345
</file1>

<file2 name="log/heads1344">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1344; charset=funny; option=strange

</file2>

<file3 name="log/stdout1344">
</file3>

</verify>
</testcase>







|


|







|






|

|




|




|

|




|



|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<name>
HTTP GET with -O -i and Content-Disposition, -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -O -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1345.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1345; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side












|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<name>
HTTP GET with -O -i and Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1345 -i -O -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1345
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1345 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1345">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1345; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout1345">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1345; charset=funny; option=strange

</file2>

</verify>
</testcase>







|


|







|






|

|




|




|

|




|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<name>
HTTP GET with -O -i and Content-Disposition, -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -O -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1346.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<name>
HTTP GET with -O -i without Content-Disposition, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1346 -i -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1346 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1346">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout1346">
</file2>

</verify>
</testcase>







|







|






|

|








|




34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<name>
HTTP GET with -O -i without Content-Disposition, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1347.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1347; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side












|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<name>
HTTP GET with -O -i and Content-Disposition, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1347 -i -O
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1347
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1347 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/1347">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1347; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout1347">
</file2>

</verify>
</testcase>







|


|







|






|

|




|




|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<name>
HTTP GET with -O -i and Content-Disposition, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -O
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1348.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<name>
FTP download, file without Content-Disposition inside, using -O
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1348 -O
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1348
RETR file1348
QUIT
</protocol>

<file1 name="log/file1348">
fooo
mooo
</file1>

<file2 name="log/stdout1348">
</file2>

</verify>
</testcase>







|












|
|



|




|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<name>
FTP download, file without Content-Disposition inside, using -O
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1349.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<name>
FTP download, file without C-D inside, using -O -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1349 -O -D log/heads1349
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1349
RETR file1349
QUIT
</protocol>

<file1 name="log/file1349">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/heads1349">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1349 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1349">
</file3>

</verify>
</testcase>







|












|
|



|






|












|






|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<name>
FTP download, file without C-D inside, using -O -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -D log/heads%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test135.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP retrieve a byte-range
 </name>
 <command>
-r 4-16 ftp://%HOSTIP:%FTPPORT/135
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 135
REST 4
RETR 135
ABOR
QUIT
</protocol>
</verify>
</testcase>







|











|

|





28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP retrieve a byte-range
 </name>
 <command>
-r 4-16 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
REST 4
RETR %TESTNUMBER
ABOR
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1350.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
FTP download, file without C-D inside, using -O -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1350 -O -D -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1350
RETR file1350
QUIT
</protocol>

<file1 name="log/file1350">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/stdout1350">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1350 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>







|












|
|



|






|












|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
FTP download, file without C-D inside, using -O -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -D -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
Changes to jni/curl/tests/data/test1351.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<name>
FTP download, file without C-D inside, using -O -J -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1351 -O -J -D log/heads1351
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1351
RETR file1351
QUIT
</protocol>

<file1 name="log/file1351">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/heads1351">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1351 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1351">
</file3>

</verify>
</testcase>







|












|
|



|






|












|






|




28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<name>
FTP download, file without C-D inside, using -O -J -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -J -D log/heads%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1352.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<name>
FTP download, file without C-D inside, using -O -J -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1352 -O -J -D -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1352
RETR file1352
QUIT
</protocol>

<file1 name="log/file1352">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/stdout1352">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1352 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>







|












|
|



|






|












|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<name>
FTP download, file without C-D inside, using -O -J -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -J -D -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
Changes to jni/curl/tests/data/test1353.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<name>
FTP download, file without C-D inside, using -O -i -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1353 -O -i -D log/heads1353
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1353
RETR file1353
QUIT
</protocol>

<file1 name="log/file1353">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/heads1353">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1353 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1353">
</file3>

</verify>
</testcase>







|












|
|



|






|












|






|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<name>
FTP download, file without C-D inside, using -O -i -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -i -D log/heads%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

# The final "221 bye bye baby" response to QUIT will not be recorded
# since that is not considered part of this particular transfer!
<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1354.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<name>
FTP download, file without C-D inside, using -O -i -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1354 -O -i -D -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1354
RETR file1354
QUIT
</protocol>

<file1 name="log/file1354">
fooo
mooo
</file1>

<file2 name="log/stdout1354">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1354 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>







|












|
|



|




|












|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<name>
FTP download, file without C-D inside, using -O -i -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -i -D -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
Changes to jni/curl/tests/data/test1355.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<name>
FTP download, file without C-D inside, using -O -i, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1355 -O -i
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1355
RETR file1355
QUIT
</protocol>

<file1 name="log/file1355">
fooo
mooo
</file1>

<file2 name="log/stdout1355">
</file2>

</verify>
</testcase>







|












|
|



|




|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<name>
FTP download, file without C-D inside, using -O -i, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -i
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1356.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1356 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1356; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>










|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
FTP download, file with Content-Disposition inside, using -O
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1356 -O
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1356
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1356
RETR file1356
QUIT
</protocol>

<file1 name="log/file1356">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1356; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1356">
</file2>

</verify>
</testcase>







|


|












|
|



|

|




|




|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
FTP download, file with Content-Disposition inside, using -O
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1357.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1357 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1357; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>










|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<name>
FTP download, file with C-D inside, using -O -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1357 -O -D log/heads1357
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1357
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1357
RETR file1357
QUIT
</protocol>

<file1 name="log/file1357">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1357; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads1357">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for 1357 () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1357">
</file3>

</verify>
</testcase>







|


|












|
|



|

|




|




|












|






|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<name>
FTP download, file with C-D inside, using -O -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for %TESTNUMBER () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1358.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1358 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1358; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>










|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<name>
FTP download, file with C-D inside, using -O -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1358 -O -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1358
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1358
RETR file1358
QUIT
</protocol>

<file1 name="log/file1358">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1358; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1358">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for 1358 () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>







|


|












|
|



|

|




|




|












|








35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<name>
FTP download, file with C-D inside, using -O -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for %TESTNUMBER () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1359.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file1359 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1359; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>











|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<name>
FTP download, file with C-D inside, using -O -J -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1359 -O -J -D log/heads1359
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1359
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1359
RETR file1359
QUIT
</protocol>

<file1 name="log/file1359">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1359; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads1359">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for 1359 () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1359">
</file3>

</verify>
</testcase>







|


|












|
|



|

|




|




|












|






|




36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<name>
FTP download, file with C-D inside, using -O -J -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -J -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for %TESTNUMBER () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test136.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
ftp
</server>
 <name>
FTP with user and no password
 </name>
 <command>
-u user: ftp://%HOSTIP:%FTPPORT/136
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER user
PASS 
PWD
EPSV
TYPE I
SIZE 136
RETR 136
QUIT
</protocol>
</verify>
</testcase>







|











|
|




18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
ftp
</server>
 <name>
FTP with user and no password
 </name>
 <command>
-u user: ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER user
PASS 
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1360.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file1360 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1360; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>











|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<name>
FTP download, file with C-D inside, using -O -J -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1360 -O -J -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1360
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1360
RETR file1360
QUIT
</protocol>

<file1 name="log/file1360">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1360; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1360">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for 1360 () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>







|


|












|
|



|

|




|




|












|








36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<name>
FTP download, file with C-D inside, using -O -J -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -J -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for %TESTNUMBER () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1361.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1361 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1361; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>










|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<name>
FTP download, file with C-D inside, using -O -i -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1361 -O -i -D log/heads1361
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1361
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1361
RETR file1361
QUIT
</protocol>

<file1 name="log/file1361">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1361; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads1361">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for 1361 () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1361">
</file3>

</verify>
</testcase>







|


|












|
|



|

|




|




|












|






|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<name>
FTP download, file with C-D inside, using -O -i -D file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -i -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for %TESTNUMBER () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1362.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1362 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1362; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>










|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<name>
FTP download, file with C-D inside, using -O -i -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1362 -O -i -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1362
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1362
RETR file1362
QUIT
</protocol>

<file1 name="log/file1362">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1362; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1362">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for 1362 () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>







|


|












|
|



|

|




|




|












|








35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<name>
FTP download, file with C-D inside, using -O -i -D stdout
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -i -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 214
150 Binary data connection for %TESTNUMBER () (214 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1363.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1363 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1363; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>










|


|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
FTP download, file with C-D inside, using -O -i, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1363 -O -i
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name1363
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1363
RETR file1363
QUIT
</protocol>

<file1 name="log/file1363">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1363; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1363">
</file2>

</verify>
</testcase>







|


|












|
|



|

|




|




|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<name>
FTP download, file with C-D inside, using -O -i, without -D
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -O -i
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/file%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1364.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname without Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1364 -o log/outfile1364 -D log/heads1364
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1364
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1364 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1364">
12345
</file1>

<file2 name="log/heads1364">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout1364">
</file3>

</verify>
</testcase>












|



















|


|







|






|



|

|







|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname without Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1365.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname without Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1365 -o log/outfile1365 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1365
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1365 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1365">
12345
</file1>

<file2 name="log/stdout1365">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>












|



















|


|







|






|



|

|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname without Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/outfile%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1366.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1366; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname and Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1366 -o log/outfile1366 -D log/heads1366
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1366 log/name1366
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1366 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1366">
12345
</file1>

<file2 name="log/heads1366">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1366; charset=funny; option=strange

</file2>

<file3 name="log/stdout1366">
</file3>

</verify>
</testcase>












|




|















|


|







|






|



|

|




|



|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname and Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1367.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1367; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname and Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1367 -o log/outfile1367 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1367 log/name1367
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1367 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1367">
12345
</file1>

<file2 name="log/stdout1367">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1367; charset=funny; option=strange

</file2>

</verify>
</testcase>












|




|















|


|







|






|



|

|




|





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname and Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/outfile%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1368.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J without Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1368 -J -o log/outfile1368 -D log/heads1368
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1368
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1368 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1368">
12345
</file1>

<file2 name="log/heads1368">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout1368">
</file3>

</verify>
</testcase>













|



















|


|







|






|



|

|







|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J without Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1369.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J without Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1369 -J -o log/outfile1369 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1369
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1369 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1369">
12345
</file1>

<file2 name="log/stdout1369">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>













|



















|


|







|






|



|

|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J without Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -o log/outfile%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test137.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download without size in RETR string
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/137
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
CWD lululul
EPSV
TYPE I
SIZE 137
RETR 137
QUIT
</protocol>
</verify>
</testcase>







|













|
|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download without size in RETR string
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
CWD lululul
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1370.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1370; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J and Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1370 -J -o log/outfile1370 -D log/heads1370
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1370 log/name1370
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1370 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1370">
12345
</file1>

<file2 name="log/heads1370">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1370; charset=funny; option=strange

</file2>

<file3 name="log/stdout1370">
</file3>

</verify>
</testcase>













|




|















|


|







|






|



|

|




|



|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J and Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1371.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1371; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J and Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1371 -J -o log/outfile1371 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1371 log/name1371
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1371 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1371">
12345
</file1>

<file2 name="log/stdout1371">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1371; charset=funny; option=strange

</file2>

</verify>
</testcase>













|




|















|


|







|






|



|

|




|





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -J and Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -o log/outfile%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1372.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i without Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1372 -i -o log/outfile1372 -D log/heads1372
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1372
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1372 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1372">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/heads1372">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout1372">
</file3>

</verify>
</testcase>












|



















|


|







|






|

|








|

|







|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i without Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1373.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i without Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1373 -i -o log/outfile1373 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1373
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1373 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1373">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout1373">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>












|



















|


|







|






|

|








|

|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i without Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -o log/outfile%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1374.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1374; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i and Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1374 -i -o log/outfile1374 -D log/heads1374
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1374 log/name1374
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1374 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1374">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1374; charset=funny; option=strange

12345
</file1>

<file2 name="log/heads1374">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1374; charset=funny; option=strange

</file2>

<file3 name="log/stdout1374">
</file3>

</verify>
</testcase>












|




|















|


|







|






|

|




|




|

|




|



|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i and Content-Disposition, -D file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</file1>

<file2 name="log/heads%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1375.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1375; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i and Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1375 -i -o log/outfile1375 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1375 log/name1375
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1375 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1375">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1375; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout1375">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1375; charset=funny; option=strange

</file2>

</verify>
</testcase>












|




|















|


|







|






|

|




|




|

|




|





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i and Content-Disposition, -D stdout
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -o log/outfile%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1376.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i without Content-Disposition, without -D
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1376 -i -o log/outfile1376
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1376
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1376 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1376">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout1376">
</file2>

</verify>
</testcase>












|



















|


|







|






|

|








|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i without Content-Disposition, without -D
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -o log/outfile%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1377.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1377; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i and Content-Disposition, without -D
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1377 -i -o log/outfile1377
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1377 log/name1377
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1377 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1377">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1377; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout1377">
</file2>

</verify>
</testcase>












|




|















|


|







|






|

|




|




|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET -o fname -i and Content-Disposition, without -D
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -i -o log/outfile%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

12345
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1378.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
<name>
FTP DL, file without Content-Disposition inside, using -o fname
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1378 -o log/download1378
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1378
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1378
RETR file1378
QUIT
</protocol>

<file1 name="log/download1378">
fooo
mooo
</file1>

<file2 name="log/stdout1378">
</file2>

</verify>
</testcase>







|


|












|
|



|




|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
<name>
FTP DL, file without Content-Disposition inside, using -o fname
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1379.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1379 -o log/download1379 -D log/heads1379
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1379
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1379
RETR file1379
QUIT
</protocol>

<file1 name="log/download1379">
fooo
mooo
</file1>

<file2 name="log/heads1379">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1379 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1379">
</file3>

</verify>
</testcase>







|


|












|
|



|




|












|






|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test138.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP download without size in RETR string and no SIZE command
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/138
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
CWD lululul
EPSV
TYPE I
SIZE 138
RETR 138
QUIT
</protocol>
</verify>
</testcase>







|













|
|




24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP download without size in RETR string and no SIZE command
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
CWD lululul
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1380.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1380 -o log/download1380 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1380
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1380
RETR file1380
QUIT
</protocol>

<file1 name="log/download1380">
fooo
mooo
</file1>

<file2 name="log/stdout1380">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1380 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>







|


|












|
|



|




|












|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
Changes to jni/curl/tests/data/test1381.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -J -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1381 -o log/download1381 -J -D log/heads1381
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1381
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1381
RETR file1381
QUIT
</protocol>

<file1 name="log/download1381">
fooo
mooo
</file1>

<file2 name="log/heads1381">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1381 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1381">
</file3>

</verify>
</testcase>







|


|












|
|



|




|












|






|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -J -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -J -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1382.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -J -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1382 -o log/download1382 -J -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1382
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1382
RETR file1382
QUIT
</protocol>

<file1 name="log/download1382">
fooo
mooo
</file1>

<file2 name="log/stdout1382">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1382 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>







|


|












|
|



|




|












|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -J -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -J -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
Changes to jni/curl/tests/data/test1383.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -i -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1383 -o log/download1383 -i -D log/heads1383
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1383
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1383
RETR file1383
QUIT
</protocol>

<file1 name="log/download1383">
fooo
mooo
</file1>

<file2 name="log/heads1383">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1383 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1383">
</file3>

</verify>
</testcase>







|


|












|
|



|




|












|






|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -i -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -i -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1384.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -i -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1384 -o log/download1384 -i -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1384
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1384
RETR file1384
QUIT
</protocol>

<file1 name="log/download1384">
fooo
mooo
</file1>

<file2 name="log/stdout1384">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for 1384 () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>







|


|












|
|



|




|












|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -i -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -i -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 10
150 Binary data connection for %TESTNUMBER () (10 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
Changes to jni/curl/tests/data/test1385.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -i, without -D
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1385 -o log/download1385 -i
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1385
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1385
RETR file1385
QUIT
</protocol>

<file1 name="log/download1385">
fooo
mooo
</file1>

<file2 name="log/stdout1385">
</file2>

</verify>
</testcase>







|


|












|
|



|




|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
<name>
FTP DL, file without C-D inside, using -o fname -i, without -D
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -i
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
fooo
mooo
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1386.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1386 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1386; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with Content-Disposition inside, using -o fname
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1386 -o log/download1386
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1386 log/name1386
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1386
RETR file1386
QUIT
</protocol>

<file1 name="log/download1386">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1386; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1386">
</file2>

</verify>
</testcase>










|


|




|














|


|












|
|



|

|




|




|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with Content-Disposition inside, using -o fname
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1387.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1387 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1387; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1387 -o log/download1387 -D log/heads1387
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1387 log/name1387
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1387
RETR file1387
QUIT
</protocol>

<file1 name="log/download1387">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1387; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads1387">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for 1387 () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1387">
</file3>

</verify>
</testcase>










|


|




|














|


|












|
|



|

|




|




|












|






|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for %TESTNUMBER () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1388.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1388 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1388; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1388 -o log/download1388 -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1388 log/name1388
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1388
RETR file1388
QUIT
</protocol>

<file1 name="log/download1388">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1388; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1388">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for 1388 () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>










|


|




|














|


|












|
|



|

|




|




|












|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for %TESTNUMBER () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1389.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file1389 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1389; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -J -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1389 -o log/download1389 -J -D log/heads1389
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1389 log/name1389
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1389
RETR file1389
QUIT
</protocol>

<file1 name="log/download1389">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1389; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads1389">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for 1389 () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1389">
</file3>

</verify>
</testcase>











|


|




|














|


|












|
|



|

|




|




|












|






|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -J -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -J -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for %TESTNUMBER () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test139.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download a newer file with -z
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/139 -z "1 jan 1989"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM 139
EPSV
TYPE I
SIZE 139
RETR 139
QUIT
</protocol>
</verify>
</testcase>







|










|


|
|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download a newer file with -z
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/%TESTNUMBER -z "1 jan 1989"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM %TESTNUMBER
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1390.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file1390 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1390; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -J -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1390 -o log/download1390 -J -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1390 log/name1390
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1390
RETR file1390
QUIT
</protocol>

<file1 name="log/download1390">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1390; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1390">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for 1390 () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>











|


|




|














|


|












|
|



|

|




|




|












|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<testcase>
<info>
<keywords>
FTP
RETR
-J
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -J -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -J -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for %TESTNUMBER () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1391.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1391 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1391; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -i -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1391 -o log/download1391 -i -D log/heads1391
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1391 log/name1391
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1391
RETR file1391
QUIT
</protocol>

<file1 name="log/download1391">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1391; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads1391">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for 1391 () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout1391">
</file3>

</verify>
</testcase>










|


|




|














|


|












|
|



|

|




|




|












|






|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -i -D file
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -i -D log/heads%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/heads%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for %TESTNUMBER () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

<file3 name="log/stdout%TESTNUMBER">
</file3>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1392.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1392 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1392; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -i -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1392 -o log/download1392 -i -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1392 log/name1392
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1392
RETR file1392
QUIT
</protocol>

<file1 name="log/download1392">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1392; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1392">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for 1392 () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>










|


|




|














|


|












|
|



|

|




|




|












|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -i -D stdout
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -i -D -
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
220-        _   _ ____  _     
220-    ___| | | |  _ \| |    
220-   / __| | | | |_) | |    
220-  | (__| |_| |  _ {| |___ 
220    \___|\___/|_| \_\_____|
331 We are happy you popped in!
230 Welcome you silly person
257 "/" is current directory
250 CWD command successful.
229 Entering Passive Mode (stripped)
200 I modify TYPE as you wanted
213 222
150 Binary data connection for %TESTNUMBER () (222 bytes).
226 File transfer complete
</file2>
<stripfile2>
s/^(229 Entering Passive Mode \().*(\).*)/${1}stripped${2}/
</stripfile2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1393.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file1393 contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1393; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -i, without -D
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file1393 -o log/download1393 -i
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file1393 log/name1393
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file1393
RETR file1393
QUIT
</protocol>

<file1 name="log/download1393">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1393; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout1393">
</file2>

</verify>
</testcase>










|


|




|














|


|












|
|



|

|




|




|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
FTP
RETR
</keywords>
</info>

# Server-side
<reply>
# file%TESTNUMBER contents...
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<name>
FTP DL, file with C-D inside, using -o fname -i, without -D
</name>
<command option="no-output,no-include">
ftp://%HOSTIP:%FTPPORT/path/file%TESTNUMBER -o log/download%TESTNUMBER -i
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/file%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE file%TESTNUMBER
RETR file%TESTNUMBER
QUIT
</protocol>

<file1 name="log/download%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

MOOOO
</file1>

<file2 name="log/stdout%TESTNUMBER">
</file2>

</verify>
</testcase>
Changes to jni/curl/tests/data/test14.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
http
</server>
 <name>
HTTP HEAD with Connection: close
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/14 -i --head
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /want/14 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
http
</server>
 <name>
HTTP HEAD with Connection: close
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -i --head
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test140.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
ftp
</server>
 <name>
FTP download file with -z, expected to not transfer
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/140 -z "1 jan 2004"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM 140
QUIT
</protocol>
</verify>
</testcase>







|










|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
ftp
</server>
 <name>
FTP download file with -z, expected to not transfer
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/%TESTNUMBER -z "1 jan 2004"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1400.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 <name>
--libcurl for simple HTTP GET
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1400 --libcurl log/test1400.c
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stripfile>
s/(USERAGENT, \")[^\"]+/${1}stripped/
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# CURLOPT_INTERLEAVEDATA requires RTSP protocol
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_HTTP09_ALLOWED/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test1400.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/1400");
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
%if ftp
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
%endif
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);







|






|
















|













|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 <name>
--libcurl for simple HTTP GET
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER --libcurl log/test%TESTNUMBER.c
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stripfile>
s/(USERAGENT, \")[^\"]+/${1}stripped/
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# CURLOPT_INTERLEAVEDATA requires RTSP protocol
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_HTTP09_ALLOWED/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER");
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
%if ftp
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
%endif
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
Changes to jni/curl/tests/data/test1401.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 <name>
--libcurl for GET with various options
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1401 --libcurl log/test1401.c --basic -u fake:user -H "X-Files: Mulder" -H "X-Men: cyclops, iceman" -A MyUA -b chocolate=chip --proto "=http,ftp,file"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1401 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic ZmFrZTp1c2Vy
User-Agent: MyUA
Accept: */*
Cookie: chocolate=chip
X-Files: Mulder
X-Men: cyclops, iceman

</protocol>
<stripfile>
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test1401.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;
  struct curl_slist *slist1;

  slist1 = NULL;
  slist1 = curl_slist_append(slist1, "X-Files: Mulder");
  slist1 = curl_slist_append(slist1, "X-Men: cyclops, iceman");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/1401");
  curl_easy_setopt(hnd, CURLOPT_USERPWD, "fake:user");
  curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
  curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "MyUA");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_COOKIE, "chocolate=chip");
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);







|






|

















|


















|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 <name>
--libcurl for GET with various options
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER --libcurl log/test%TESTNUMBER.c --basic -u fake:user -H "X-Files: Mulder" -H "X-Men: cyclops, iceman" -A MyUA -b chocolate=chip --proto "=http,ftp,file"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic ZmFrZTp1c2Vy
User-Agent: MyUA
Accept: */*
Cookie: chocolate=chip
X-Files: Mulder
X-Men: cyclops, iceman

</protocol>
<stripfile>
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;
  struct curl_slist *slist1;

  slist1 = NULL;
  slist1 = curl_slist_append(slist1, "X-Files: Mulder");
  slist1 = curl_slist_append(slist1, "X-Men: cyclops, iceman");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER");
  curl_easy_setopt(hnd, CURLOPT_USERPWD, "fake:user");
  curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
  curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "MyUA");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_COOKIE, "chocolate=chip");
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
Changes to jni/curl/tests/data/test1402.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 <name>
--libcurl for simple POST
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1402 --libcurl log/test1402.c -d "foo=bar" -d "baz=quux"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /we/want/1402 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 16
Content-Type: application/x-www-form-urlencoded

foo=bar&baz=quux
</protocol>
<stripfile>
# curl's default user-agent varies with version, libraries etc.
s/(USERAGENT, \")[^\"]+/${1}stripped/
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test1402.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/1402");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "foo=bar&baz=quux");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)16);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
%if ftp
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);







|






|


















|













|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 <name>
--libcurl for simple POST
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER --libcurl log/test%TESTNUMBER.c -d "foo=bar" -d "baz=quux"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 16
Content-Type: application/x-www-form-urlencoded

foo=bar&baz=quux
</protocol>
<stripfile>
# curl's default user-agent varies with version, libraries etc.
s/(USERAGENT, \")[^\"]+/${1}stripped/
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "foo=bar&baz=quux");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)16);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
%if ftp
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
Changes to jni/curl/tests/data/test1403.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 <name>
--libcurl for GET with query
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1403 --libcurl log/test1403.c -G -d "foo=bar" -d "baz=quux"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1403?foo=bar&baz=quux HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stripfile>
# curl's default user-agent varies with version, libraries etc.
s/(USERAGENT, \")[^\"]+/${1}stripped/
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test1403.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/1403?foo=bar&baz=quux");
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
%if ftp
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
%endif
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);







|






|















|













|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 <name>
--libcurl for GET with query
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER --libcurl log/test%TESTNUMBER.c -G -d "foo=bar" -d "baz=quux"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER?foo=bar&baz=quux HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stripfile>
# curl's default user-agent varies with version, libraries etc.
s/(USERAGENT, \")[^\"]+/${1}stripped/
# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
# configurations - just ignore them
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
</stripfile>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER?foo=bar&baz=quux");
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
%if ftp
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
%endif
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
Changes to jni/curl/tests/data/test1404.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 <name>
--libcurl for HTTP RFC1867-type formposting - -F with 3 files, one with explicit type & encoder
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/1404 -F name=value -F 'file=@log/test1404.txt,log/test1404.txt;type=magic/content;encoder=8bit,log/test1404.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/test1404.c
</command>
# We create this file before the command is invoked!
<file name="log/test1404.txt">
dummy data
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
-----+\w+
</strip>
<protocol>
POST /we/want/1404 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 882
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

value
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"
Content-Type: multipart/mixed; boundary=----------------------------aaaaaaaaaaaa

Content-Disposition: attachment; filename="test1404.txt"
Content-Type: text/plain

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test1404.txt"
Content-Type: magic/content
Content-Transfer-Encoding: 8bit

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test1404.txt"
Content-Type: text/plain
X-testheader-1: header 1
X-testheader-2: header 2

dummy data

------------------------------aaaaaaaaaaaa--







|


|










|














|





|






|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 <name>
--libcurl for HTTP RFC1867-type formposting - -F with 3 files, one with explicit type & encoder
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F name=value -F 'file=@log/test%TESTNUMBER.txt,log/test%TESTNUMBER.txt;type=magic/content;encoder=8bit,log/test%TESTNUMBER.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/test%TESTNUMBER.c
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
dummy data
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
-----+\w+
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 882
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

value
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"
Content-Type: multipart/mixed; boundary=----------------------------aaaaaaaaaaaa

Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Type: magic/content
Content-Transfer-Encoding: 8bit

dummy data

------------------------------9ef8d6205763
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Type: text/plain
X-testheader-1: header 1
X-testheader-2: header 2

dummy data

------------------------------aaaaaaaaaaaa--
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
# CURL_DOES_CONVERSION generates an extra comment.
$_ = '' if /\/\* "value" \*\//
</stripfile>
<file name="log/test1404.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])







|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
$_ = '' if /CURLOPT_INTERLEAVEDATA/
# CURL_DOES_CONVERSION generates an extra comment.
$_ = '' if /\/\* "value" \*\//
</stripfile>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
  mime2 = NULL;
  slist1 = NULL;
  slist1 = curl_slist_append(slist1, "X-testheader-1: header 1");
  slist1 = curl_slist_append(slist1, "X-testheader-2: header 2");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/1404");
  mime1 = curl_mime_init(hnd);
  part1 = curl_mime_addpart(mime1);
  curl_mime_data(part1, "value", CURL_ZERO_TERMINATED);
  curl_mime_name(part1, "name");
  part1 = curl_mime_addpart(mime1);
  mime2 = curl_mime_init(hnd);
  part2 = curl_mime_addpart(mime2);
  curl_mime_filedata(part2, "log/test1404.txt");
  part2 = curl_mime_addpart(mime2);
  curl_mime_filedata(part2, "log/test1404.txt");
  curl_mime_encoder(part2, "8bit");
  curl_mime_type(part2, "magic/content");
  part2 = curl_mime_addpart(mime2);
  curl_mime_filedata(part2, "log/test1404.txt");
  curl_mime_headers(part2, slist1, 1);
  slist1 = NULL;
  curl_mime_subparts(part1, mime2);
  mime2 = NULL;
  curl_mime_name(part1, "file");
  curl_easy_setopt(hnd, CURLOPT_MIMEPOST, mime1);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");







|







|

|



|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
  mime2 = NULL;
  slist1 = NULL;
  slist1 = curl_slist_append(slist1, "X-testheader-1: header 1");
  slist1 = curl_slist_append(slist1, "X-testheader-2: header 2");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER");
  mime1 = curl_mime_init(hnd);
  part1 = curl_mime_addpart(mime1);
  curl_mime_data(part1, "value", CURL_ZERO_TERMINATED);
  curl_mime_name(part1, "name");
  part1 = curl_mime_addpart(mime1);
  mime2 = curl_mime_init(hnd);
  part2 = curl_mime_addpart(mime2);
  curl_mime_filedata(part2, "log/test%TESTNUMBER.txt");
  part2 = curl_mime_addpart(mime2);
  curl_mime_filedata(part2, "log/test%TESTNUMBER.txt");
  curl_mime_encoder(part2, "8bit");
  curl_mime_type(part2, "magic/content");
  part2 = curl_mime_addpart(mime2);
  curl_mime_filedata(part2, "log/test%TESTNUMBER.txt");
  curl_mime_headers(part2, slist1, 1);
  slist1 = NULL;
  curl_mime_subparts(part1, mime2);
  mime2 = NULL;
  curl_mime_name(part1, "file");
  curl_easy_setopt(hnd, CURLOPT_MIMEPOST, mime1);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
Changes to jni/curl/tests/data/test1405.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 <name>
--libcurl for FTP with quote ops
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
ftp://%HOSTIP:%FTPPORT/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/test1405.c
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
NOOP 1
FAIL
EPSV
PASV
TYPE I
NOOP 2
FAIL HARD
SIZE 1405
RETR 1405
NOOP 3
QUIT
</protocol>
<file name="log/test1405.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])







|
















|
|



|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 <name>
--libcurl for FTP with quote ops
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/test%TESTNUMBER.c
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
NOOP 1
FAIL
EPSV
PASV
TYPE I
NOOP 2
FAIL HARD
SIZE %TESTNUMBER
RETR %TESTNUMBER
NOOP 3
QUIT
</protocol>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  slist2 = curl_slist_append(slist2, "NOOP 3");
  slist3 = NULL;
  slist3 = curl_slist_append(slist3, "NOOP 2");
  slist3 = curl_slist_append(slist3, "*FAIL HARD");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "ftp://%HOSTIP:%FTPPORT/1405");
  curl_easy_setopt(hnd, CURLOPT_QUOTE, slist1);
  curl_easy_setopt(hnd, CURLOPT_POSTQUOTE, slist2);
  curl_easy_setopt(hnd, CURLOPT_PREQUOTE, slist3);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);








|







80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  slist2 = curl_slist_append(slist2, "NOOP 3");
  slist3 = NULL;
  slist3 = curl_slist_append(slist3, "NOOP 2");
  slist3 = curl_slist_append(slist3, "*FAIL HARD");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "ftp://%HOSTIP:%FTPPORT/%TESTNUMBER");
  curl_easy_setopt(hnd, CURLOPT_QUOTE, slist1);
  curl_easy_setopt(hnd, CURLOPT_POSTQUOTE, slist2);
  curl_easy_setopt(hnd, CURLOPT_PREQUOTE, slist3);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);

Changes to jni/curl/tests/data/test1406.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
</server>
 <name>
--libcurl for SMTP
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
<file name="log/test1406.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/1406 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-from sender@example.com -T log/test1406.eml --libcurl log/test1406.c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 1406
MAIL FROM:<sender@example.com> SIZE=38
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
To: another

body
.
</upload>
<file name="log/test1406.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;
  struct curl_slist *slist1;

  slist1 = NULL;
  slist1 = curl_slist_append(slist1, "recipient.one@example.com");
  slist1 = curl_slist_append(slist1, "recipient.two@example.com");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "smtp://%HOSTIP:%SMTPPORT/1406");
  curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
  curl_easy_setopt(hnd, CURLOPT_MAIL_FROM, "sender@example.com");
  curl_easy_setopt(hnd, CURLOPT_MAIL_RCPT, slist1);
  curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, (curl_off_t)38);







|






|







|













|


















|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
</server>
 <name>
--libcurl for SMTP
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
<file name="log/test%TESTNUMBER.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-from sender@example.com -T log/test%TESTNUMBER.eml --libcurl log/test%TESTNUMBER.c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com> SIZE=38
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
To: another

body
.
</upload>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;
  struct curl_slist *slist1;

  slist1 = NULL;
  slist1 = curl_slist_append(slist1, "recipient.one@example.com");
  slist1 = curl_slist_append(slist1, "recipient.two@example.com");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER");
  curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
  curl_easy_setopt(hnd, CURLOPT_MAIL_FROM, "sender@example.com");
  curl_easy_setopt(hnd, CURLOPT_MAIL_RCPT, slist1);
  curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, (curl_off_t)38);
Changes to jni/curl/tests/data/test1407.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</keywords>
</info>

#
# Server-side
<reply>
<servercmd>
REPLY LIST +OK 1407 100\r\n.
</servercmd>
</reply>

#
# Client-side
<client>
<server>
pop3
</server>
 <name>
--libcurl for POP3 LIST one message
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
<command>
pop3://%HOSTIP:%POP3PORT/1407 -l -u user:secret --libcurl log/test1407.c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
LIST 1407
QUIT
</protocol>
<file name="log/test1407.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "pop3://%HOSTIP:%POP3PORT/1407");
  curl_easy_setopt(hnd, CURLOPT_DIRLISTONLY, 1L);
  curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:secret");
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);

  /* Here is a list of options the curl code used that cannot get generated







|
















|










|


|













|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</keywords>
</info>

#
# Server-side
<reply>
<servercmd>
REPLY LIST +OK %TESTNUMBER 100\r\n.
</servercmd>
</reply>

#
# Client-side
<client>
<server>
pop3
</server>
 <name>
--libcurl for POP3 LIST one message
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
<command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -l -u user:secret --libcurl log/test%TESTNUMBER.c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
LIST %TESTNUMBER
QUIT
</protocol>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "pop3://%HOSTIP:%POP3PORT/%TESTNUMBER");
  curl_easy_setopt(hnd, CURLOPT_DIRLISTONLY, 1L);
  curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:secret");
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);

  /* Here is a list of options the curl code used that cannot get generated
Changes to jni/curl/tests/data/test1408.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</keywords>
</info>
#
# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Set-Cookie: time=1

-foo-
</data1>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Set-Cookie: time=2

-foo-
</data2>







|









|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</keywords>
</info>
#
# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Set-Cookie: time=1

-foo-
</data1>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Set-Cookie: time=2

-foo-
</data2>
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<server>
http-ipv6
</server>
 <name>
HTTP receive cookies over IPV6
 </name>
 <command>
-c log/jar1408 -g http://%HOST6IP:%HTTP6PORT/path/14080001 http://%HOST6IP:%HTTP6PORT/path/14080002
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/14080001 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

GET /path/14080002 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: time=1

</protocol>
</verify>
</testcase>







|







|




|








44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<server>
http-ipv6
</server>
 <name>
HTTP receive cookies over IPV6
 </name>
 <command>
-c log/jar%TESTNUMBER -g http://%HOST6IP:%HTTP6PORT/path/%TESTNUMBER0001 http://%HOST6IP:%HTTP6PORT/path/%TESTNUMBER0002
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/%TESTNUMBER0001 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: time=1

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1409.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
none
</server>
 <name>
Pass in string to -C
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/1409 -C wrong
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
none
</server>
 <name>
Pass in string to -C
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER -C wrong
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test141.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP download info with -I
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/141 -I
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM 141
TYPE I
SIZE 141
REST 0
QUIT
</protocol>
<stdout>
Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT
Content-Length: 42
Accept-ranges: bytes







|










|

|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP download info with -I
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/blalbla/%TESTNUMBER -I
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD blalbla
MDTM %TESTNUMBER
TYPE I
SIZE %TESTNUMBER
REST 0
QUIT
</protocol>
<stdout>
Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT
Content-Length: 42
Accept-ranges: bytes
Changes to jni/curl/tests/data/test1410.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
none
</server>
 <name>
Pass in negative number to --max-time
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/1410 --max-time -4
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
none
</server>
 <name>
Pass in negative number to --max-time
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER --max-time -4
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1411.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
PUT
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
PUT
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</server>

# make sure there's no Expect: 100-continue when there's no file to send!
 <name>
HTTP with zero size file PUT
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1411 -T log/empty1411
</command>
# create an empty file
<file name="log/empty1411">
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /1411 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>







|


|







|








32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</server>

# make sure there's no Expect: 100-continue when there's no file to send!
 <name>
HTTP with zero size file PUT
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/empty%TESTNUMBER
</command>
# create an empty file
<file name="log/empty%TESTNUMBER">
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1412.
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
!SSPI
crypto
</features>
 <name>
HTTP GET with --anyauth with two URLs (picking Digest) 
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1412 -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/14120001
</command>
<file name="log/put1412">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1412 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1412 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1412", response="0390dbe89e31adca0413d11f91f30e7f"
User-Agent: curl/%VERSION
Accept: */*

GET /14120001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /14120001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/14120001", response="0085df91870374c8bf4e94415e7fbf8e"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

|










|




|

|



|




|

|






90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
!SSPI
crypto
</features>
 <name>
HTTP GET with --anyauth with two URLs (picking Digest) 
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="0390dbe89e31adca0413d11f91f30e7f"
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER0001", response="0085df91870374c8bf4e94415e7fbf8e"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1413.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: moo.html/14130002#fragmentpart
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: moo.html/14130002#fragmentpart
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with fragment in new URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/this/1413 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/1413 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /this/moo.html/14130002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: moo.html/%TESTNUMBER0002#fragmentpart
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: moo.html/%TESTNUMBER0002#fragmentpart
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with fragment in new URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/this/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /this/moo.html/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1414.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP PORT without SIZE or EPRT support
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1414 -P -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(EPRT \|1\|)(.*)/$1/
s/^(PORT)(.*)/$1/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
PORT
TYPE I
SIZE 1414
RETR 1414
QUIT
</protocol>
</verify>
</testcase>







|
















|
|




28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP PORT without SIZE or EPRT support
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -P -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(EPRT \|1\|)(.*)/$1/
s/^(PORT)(.*)/$1/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
PORT
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1415.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test1value=test1; domain=example.com; path=/;
Set-Cookie: test2value=test2; expires=Thursday, 31-Dec-2037 00:00:00 GMT; domain=example.com; path=/;
Set-Cookie: test3value=test3; expires=Monday, 13-Jun-1988 03:04:55 GMT; domain=example.com; path=/;







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test1value=test1; domain=example.com; path=/;
Set-Cookie: test2value=test2; expires=Thursday, 31-Dec-2037 00:00:00 GMT; domain=example.com; path=/;
Set-Cookie: test3value=test3; expires=Monday, 13-Jun-1988 03:04:55 GMT; domain=example.com; path=/;
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<name>
Delete expired cookies
</name>
<setenv>
TZ=GMT
</setenv>
<command>
http://example.com/we/want/1415 -b none -c log/jar1415.txt -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.com/we/want/1415 HTTP/1.1
Host: example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

<file name="log/jar1415.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.example.com	TRUE	/	FALSE	2145830400	test7value	test7
.example.com	TRUE	/	FALSE	2145830400	test4value	test4
.example.com	TRUE	/	FALSE	2145830400	test2value	test2
.example.com	TRUE	/	FALSE	0	test1value	test1
</file>
</verify>
</testcase>







|









|







|











40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<name>
Delete expired cookies
</name>
<setenv>
TZ=GMT
</setenv>
<command>
http://example.com/we/want/%TESTNUMBER -b none -c log/jar%TESTNUMBER.txt -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.com/we/want/%TESTNUMBER HTTP/1.1
Host: example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

<file name="log/jar%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.example.com	TRUE	/	FALSE	2145830400	test7value	test7
.example.com	TRUE	/	FALSE	2145830400	test4value	test4
.example.com	TRUE	/	FALSE	2145830400	test2value	test2
.example.com	TRUE	/	FALSE	0	test1value	test1
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1416.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding overflowed chunked size
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1416
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1416 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# 56 = CURLE_RECV_ERROR







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding overflowed chunked size
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# 56 = CURLE_RECV_ERROR
Changes to jni/curl/tests/data/test1417.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
http
</server>
 <name>
HTTP GET with chunked encoding and chunked trailer without CRs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1417 -D log/heads1417
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1417 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads1417">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Trailer: chunky-trailer
Connection: mooo

chunky-trailer: header data







|







|





|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
http
</server>
 <name>
HTTP GET with chunked encoding and chunked trailer without CRs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -D log/heads%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads%TESTNUMBER">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Trailer: chunky-trailer
Connection: mooo

chunky-trailer: header data
Changes to jni/curl/tests/data/test1418.
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
!SSPI
crypto
</features>
 <name>
HTTP with --anyauth and connection re-use
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1418 -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/14180003
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1418 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1418 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/1418", response="986238b7e0077754944c966f56d9bc77"
User-Agent: curl/%VERSION
Accept: */*

GET /14180003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /14180003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/14180003", response="1c6390a67bac3283a9b023402f3b3540"
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|






|




|

|



|




|

|







83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
!SSPI
crypto
</features>
 <name>
HTTP with --anyauth and connection re-use
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/%TESTNUMBER0003
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/%TESTNUMBER", response="986238b7e0077754944c966f56d9bc77"
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/%TESTNUMBER0003", response="1c6390a67bac3283a9b023402f3b3540"
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1419.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
HTTP with --anyauth (but no auth!) and connection re-use
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1419 --anyauth http://%HOSTIP:%HTTPPORT/14190003
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1419 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /14190003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>







|






|




|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
HTTP with --anyauth (but no auth!) and connection re-use
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --anyauth http://%HOSTIP:%HTTPPORT/%TESTNUMBER0003
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
Changes to jni/curl/tests/data/test142.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
ftp
</server>
 <name>
FTP URL with 150 dir levels
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
ftp
</server>
 <name>
FTP URL with 150 dir levels
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
178
179
180
181
182
183
184
185
186
187
188
189
190
CWD part146
CWD part147
CWD part148
CWD part149
CWD part150
EPSV
TYPE I
SIZE 142
RETR 142
QUIT
</protocol>
</verify>
</testcase>







|
|




178
179
180
181
182
183
184
185
186
187
188
189
190
CWD part146
CWD part147
CWD part148
CWD part149
CWD part150
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1420.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 <name>
--libcurl for IMAP FETCH message
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
<command>
'imap://%HOSTIP:%IMAPPORT/1420/;MAILINDEX=1' -u user:secret --libcurl log/test1420.c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 1420
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
<file name="log/test1420.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "imap://%HOSTIP:%IMAPPORT/1420/;MAILINDEX=1");
  curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:secret");
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);

  /* Here is a list of options the curl code used that cannot get generated
     as source easily. You may select to either not use them or implement







|









|



|













|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 <name>
--libcurl for IMAP FETCH message
 </name>
<setenv>
SSL_CERT_FILE=
</setenv>
<command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret --libcurl log/test%TESTNUMBER.c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
<file name="log/test%TESTNUMBER.c" mode="text">
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * https://curl.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
  curl_easy_setopt(hnd, CURLOPT_URL, "imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1");
  curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:secret");
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);

  /* Here is a list of options the curl code used that cannot get generated
     as source easily. You may select to either not use them or implement
Changes to jni/curl/tests/data/test1421.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
Re-using HTTP proxy connection for two different host names
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990
</command>
<features>
proxy
</features>
</client>

#







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
Re-using HTTP proxy connection for two different host names
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.%TESTNUMBER:8990/ http://different.remote.haxx.se.%TESTNUMBER:8990
</command>
<features>
proxy
</features>
</client>

#
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
HTTP/1.1 200 OK
Uknown-header: blrub
Content-Length: 6

-foo-
</stdout>
<protocol>
GET http://test.remote.haxx.se.1421:8990/ HTTP/1.1
Host: test.remote.haxx.se.1421:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://different.remote.haxx.se.1421:8990/ HTTP/1.1
Host: different.remote.haxx.se.1421:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

[DISCONNECT]
</protocol>
</verify>
</testcase>







|
|




|
|








52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
HTTP/1.1 200 OK
Uknown-header: blrub
Content-Length: 6

-foo-
</stdout>
<protocol>
GET http://test.remote.haxx.se.%TESTNUMBER:8990/ HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://different.remote.haxx.se.%TESTNUMBER:8990/ HTTP/1.1
Host: different.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1422.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0
Connection: close
Content-Type: text/html
Content-Disposition: filename=name1422; charset=funny; option=str//nge

</data>
</reply>

#
# Client-side
<client>













|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-J
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=str//nge

</data>
</reply>

#
# Client-side
<client>
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -O -J and Content-Disposition (empty file)
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1422 -J -O file://%PWD/log/name1422
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1422 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/name1422">
</file1>

</verify>
</testcase>







|







|






|




36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<name>
HTTP GET with -O -J and Content-Disposition (empty file)
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O file://%PWD/log/name%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/name%TESTNUMBER">
</file1>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1423.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0
Connection: close
Content-Type: text/html

</data>
</reply>

#
# Client-side
<client>
<server>
http
file
</server>
<name>
HTTP GET -o fname without Content-Disposition (empty file)
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1423 -o log/outfile1423 file://%PWD/log/outfile1423
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/1423
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1423 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1423">
</file1>

</verify>
</testcase>












|



















|


|







|






|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0
Connection: close
Content-Type: text/html

</data>
</reply>

#
# Client-side
<client>
<server>
http
file
</server>
<name>
HTTP GET -o fname without Content-Disposition (empty file)
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/outfile%TESTNUMBER file://%PWD/log/outfile%TESTNUMBER
</command>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
</file1>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1424.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<client>
<server>
http
</server>
<name>
HTTP GET -o fname without Content-Disposition (unmet time condition)
</name>
<file name="log/outfile1424">
original contents
</file>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1424 -z "dec 12 11:00:00 1999 GMT" -o log/outfile1424
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1424 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT

</protocol>

<file1 name="log/outfile1424">
original contents
</file1>

</verify>
</testcase>







|



|







|







|





42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<client>
<server>
http
</server>
<name>
HTTP GET -o fname without Content-Disposition (unmet time condition)
</name>
<file name="log/outfile%TESTNUMBER">
original contents
</file>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -z "dec 12 11:00:00 1999 GMT" -o log/outfile%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT

</protocol>

<file1 name="log/outfile%TESTNUMBER">
original contents
</file1>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1425.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test1426.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test1427.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
none
</server>
 <name>
too large -m timeout value
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/1427 -m 184467440737095510
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
none
</server>
 <name>
too large -m timeout value
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER -m 184467440737095510
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test1428.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP over proxy-tunnel with --proxy-header and --header
 </name>
 <command>
http://test.1428:%HTTPPORT/we/want/that/page/1428 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.1428:%HTTPPORT HTTP/1.1
Host: test.1428:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
header-type: proxy

</proxy>
<protocol>
GET /we/want/that/page/1428 HTTP/1.1
Host: test.1428:%HTTPPORT
Authorization: Basic aWFtOm15OjtzZWxm
User-Agent: curl/%VERSION
Accept: */*
header-type: server

</protocol>
</verify>
</testcase>







|















|




















|










|
|






|
|








9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP over proxy-tunnel with --proxy-header and --header
 </name>
 <command>
http://test.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
header-type: proxy

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
Authorization: Basic aWFtOm15OjtzZWxm
User-Agent: curl/%VERSION
Accept: */*
header-type: server

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1429.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP/0.9
</keywords>
</info>

<reply>
<data nocheck="yes">
HTTP/1.1 2345 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP/0.9
</keywords>
</info>

<reply>
<data nocheck="yes">
HTTP/1.1 2345 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
http
</server>

<name>
HTTP GET with 4-digit response code
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1429 --write-out '%{response_code}' --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
HTTP/1.1 2345 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
234
</stdout>
<protocol>
GET /1429 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|








|













|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
http
</server>

<name>
HTTP GET with 4-digit response code
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --write-out '%{response_code}' --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
HTTP/1.1 2345 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
234
</stdout>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test143.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP URL with type=a
 </name>
 <command>
"ftp://%HOSTIP:%FTPPORT/%2ftmp/moo/143;type=a"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD tmp
CWD moo
EPSV
TYPE A
SIZE 143
RETR 143
QUIT
</protocol>
</verify>
</testcase>







|














<
|




18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

40
41
42
43
44
<server>
ftp
</server>
 <name>
FTP URL with type=a
 </name>
 <command>
"ftp://%HOSTIP:%FTPPORT/%2ftmp/moo/%TESTNUMBER;type=a"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD tmp
CWD moo
EPSV
TYPE A

RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1430.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data>
HTTP/1.1 -12 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data>
HTTP/1.1 -12 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP GET with negative response code
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1430
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1430 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP GET with negative response code
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1431.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data>
HTTP/1.1 2 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data>
HTTP/1.1 2 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP GET with single-digit response code
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1431
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1431 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP GET with single-digit response code
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1432.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data nocheck="yes">
HTTP/1.1 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data nocheck="yes">
HTTP/1.1 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
http
</server>

<name>
HTTP GET with 100-digit response code and survive
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1432
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1432 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
http
</server>

<name>
HTTP GET with 100-digit response code and survive
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1433.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data nocheck="yes">
HTTP/1.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

<reply>
<data nocheck="yes">
HTTP/1.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
</server>

<name>
HTTP GET with 100-digit subversion number in response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1433
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1433 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
1
</errorcode>
</verify>
</testcase>







|







|










30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
</server>

<name>
HTTP GET with 100-digit subversion number in response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
1
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1434.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<server>
http
</server>
 <name>
HTTP GET resume at exactly the existing file size is fine
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1434 -C 100
</command>
<file name="log/curl1434.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1434 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=100-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

|
















|








54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<server>
http
</server>
 <name>
HTTP GET resume at exactly the existing file size is fine
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C 100
</command>
<file name="log/curl%TESTNUMBER.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=100-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1435.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http-unix
</server>
 <name>
simple HTTP GET over Unix socket
 </name>
 <command>
--unix-socket %HTTPUNIXPATH http://server-interpreted.example.com/1435
</command>
</client>

<verify>
<protocol>
GET /1435 HTTP/1.1
Host: server-interpreted.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|





|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http-unix
</server>
 <name>
simple HTTP GET over Unix socket
 </name>
 <command>
--unix-socket %HTTPUNIXPATH http://server-interpreted.example.com/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: server-interpreted.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1436.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<server>
http-unix
</server>
 <name>
HTTP requests with multiple connections over Unix socket
 </name>
 <command>
--unix-socket %HTTPUNIXPATH http://one.example.com/14360001 http://two.example.com/14360002 http://one.example.com/14360003
</command>
</client>

<verify>
<protocol>
GET /14360001 HTTP/1.1
Host: one.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /14360002 HTTP/1.1
Host: two.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /14360003 HTTP/1.1
Host: one.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 OK







|





|




|




|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<server>
http-unix
</server>
 <name>
HTTP requests with multiple connections over Unix socket
 </name>
 <command>
--unix-socket %HTTPUNIXPATH http://one.example.com/%TESTNUMBER0001 http://two.example.com/%TESTNUMBER0002 http://one.example.com/%TESTNUMBER0003
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: one.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: two.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0003 HTTP/1.1
Host: one.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 200 OK
Changes to jni/curl/tests/data/test1437.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with duplicated WWW-Authenticate parameters
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1437 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1437 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1437 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/1437", response="4376eb639bf8e7343a6e7b56e1b89c4f", algorithm=MD5
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with duplicated WWW-Authenticate parameters
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/%TESTNUMBER", response="4376eb639bf8e7343a6e7b56e1b89c4f", algorithm=MD5
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1438.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<testcase>
<info>
<keywords>
protocol
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>

</reply>

# Client-side
<client>
<server>
http
</server>

<name>
Check if %{scheme} returns HTTP
</name>
<command>
http://%HOSTIP:%HTTPPORT/1438 --write-out '%{scheme}'
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
HTTP
</stdout>
<protocol>
GET /1438 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>











|



















|







|








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<testcase>
<info>
<keywords>
protocol
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>

</reply>

# Client-side
<client>
<server>
http
</server>

<name>
Check if %{scheme} returns HTTP
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --write-out '%{scheme}'
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
HTTP
</stdout>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1439.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<testcase>
<info>
<keywords>
HTTP
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>

</reply>

# Client-side
<client>
<server>
http
</server>

<name>
Check if %{http_version} returns 1.1
</name>
<command>
http://%HOSTIP:%HTTPPORT/1439 --write-out '%{http_version}'
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
1.1
</stdout>
<protocol>
GET /1439 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>











|



















|







|








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<testcase>
<info>
<keywords>
HTTP
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>

</reply>

# Client-side
<client>
<server>
http
</server>

<name>
Check if %{http_version} returns 1.1
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --write-out '%{http_version}'
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
1.1
</stdout>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1443.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Content-Length: 6
Connection: close

12345
</data>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

#
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Content-Length: 6
Connection: close

12345
</data>
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<name>
HTTP GET with -O and --remote-time
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1443 -O --remote-time
</command>
# Verify the mtime of the file. The mtime is specifically chosen to be an even
# number so that it can be represented exactly on a FAT filesystem.
<postcheck>
perl -e 'exit((stat("log/1443"))[9] != 960898200)'
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1443 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/1443">
12345
</file>
</verify>
</testcase>







|




|







|





|




36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<name>
HTTP GET with -O and --remote-time
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -O --remote-time
</command>
# Verify the mtime of the file. The mtime is specifically chosen to be an even
# number so that it can be represented exactly on a FAT filesystem.
<postcheck>
perl -e 'exit((stat("log/%TESTNUMBER"))[9] != 960898200)'
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/%TESTNUMBER">
12345
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1444.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP with --remote-time
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1444 --remote-time
</command>
# Verify the mtime of the file. The mtime is specifically chosen to be an even
# number so that it can be represented exactly on a FAT filesystem.
<postcheck>
perl -e 'exit((stat("log/curl1444.out"))[9] != 1234567890)'
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM 1444
EPSV
TYPE I
SIZE 1444
RETR 1444
QUIT
</protocol>
</verify>
</testcase>







|




|









|


|
|




22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP with --remote-time
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --remote-time
</command>
# Verify the mtime of the file. The mtime is specifically chosen to be an even
# number so that it can be represented exactly on a FAT filesystem.
<postcheck>
perl -e 'exit((stat("log/curl%TESTNUMBER.out"))[9] != 1234567890)'
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM %TESTNUMBER
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1445.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# Client-side
<client>
<server>
file
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test1445.dir
</precheck>
 <name>
file:// with --remote-time
 </name>
 <command>
file://localhost%FILE_PWD/log/test1445.dir/plainfile.txt --remote-time
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test1445.dir && \
perl -e 'exit((stat("log/curl1445.out"))[9] != 946728000)'
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>







|





|


|
|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# Client-side
<client>
<server>
file
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
file:// with --remote-time
 </name>
 <command>
file://localhost%FILE_PWD/log/test%TESTNUMBER.dir/plainfile.txt --remote-time
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test%TESTNUMBER.dir && \
perl -e 'exit((stat("log/curl%TESTNUMBER.out"))[9] != 946728000)'
</postcheck>
</client>

# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1446.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test1446.dir
</precheck>
 <name>
SFTP with --remote-time
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test1446.dir/rofile.txt --insecure --remote-time
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test1446.dir && \
perl -e 'exit((stat("log/curl1446.out"))[9] != 978264000)'
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>







|





|


|
|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP with --remote-time
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.dir/rofile.txt --insecure --remote-time
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test%TESTNUMBER.dir && \
perl -e 'exit((stat("log/curl%TESTNUMBER.out"))[9] != 978264000)'
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>
Changes to jni/curl/tests/data/test1448.
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<testcase>
<info>
<keywords>
HTTP
HTTP GET
IDN
followlocation

--write-out
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: http://åäö.se:%HTTPPORT/14480001

redirect
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</data1>
</reply>








>









|


|





|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<testcase>
<info>
<keywords>
HTTP
HTTP GET
IDN
followlocation
--resolve
--write-out
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: http://åäö.se:%HTTPPORT/%TESTNUMBER0001

redirect
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</data1>
</reply>

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Redirect following to UTF-8 IDN host name
 </name>

 <command>
http://åäö.se:%HTTPPORT/1448 --resolve xn--4cab6c.se:%HTTPPORT:%HOSTIP -L --connect-to %HOSTIP:%HTTPPORT:%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1448 HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /14480001 HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: http://åäö.se:%HTTPPORT/14480001

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</stdout>

</verify>
</testcase>







|







|




|








|


|


|








49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Redirect following to UTF-8 IDN host name
 </name>

 <command>
http://åäö.se:%HTTPPORT/%TESTNUMBER --resolve xn--4cab6c.se:%HTTPPORT:%HOSTIP -L --connect-to %HOSTIP:%HTTPPORT:%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: http://åäö.se:%HTTPPORT/%TESTNUMBER0001

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1449.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download range with integer overflow
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1449 -r 36893488147419103232-
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP download range with integer overflow
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -r 36893488147419103232-
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
Changes to jni/curl/tests/data/test1451.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
smb
</features>
<name>
Basic SMB request
</name>
<command>
-u 'curltest:curltest' smb://%HOSTIP:%SMBPORT/TESTS/1451
</command>
<precheck>
python -c "__import__('pkgutil').find_loader('impacket') or (__import__('sys').stdout.write('Test only works if Python package impacket is installed\n'), __import__('sys').exit(1))"
</precheck>
</client>

#







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<features>
smb
</features>
<name>
Basic SMB request
</name>
<command>
-u 'curltest:curltest' smb://%HOSTIP:%SMBPORT/TESTS/%TESTNUMBER
</command>
<precheck>
python -c "__import__('pkgutil').find_loader('impacket') or (__import__('sys').stdout.write('Test only works if Python package impacket is installed\n'), __import__('sys').exit(1))"
</precheck>
</client>

#
Changes to jni/curl/tests/data/test1452.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<features>
telnet
</features>
 <name>
Basic TELNET negotiation
 </name>
<stdin>
test1452
</stdin>
 <command>
telnet://%HOSTIP:%TELNETPORT --upload-file -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
test1452
</stdout>
</verify>
</testcase>







|










|



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<features>
telnet
</features>
 <name>
Basic TELNET negotiation
 </name>
<stdin>
test%TESTNUMBER
</stdin>
 <command>
telnet://%HOSTIP:%TELNETPORT --upload-file -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
test%TESTNUMBER
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1455.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<testcase>
<info>
<keywords>
HTTP
HTTP GET
proxy
haproxy
</keywords>
</info>

#
# Server-side
<reply name="1455">
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html












|


|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<testcase>
<info>
<keywords>
HTTP
HTTP GET
proxy
haproxy
</keywords>
</info>

#
# Server-side
<reply name="%TESTNUMBER">
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
<name>
HTTP GET when PROXY Protocol enabled
</name>
<command>
http://%HOSTIP:%HTTPPORT/1455 --haproxy-protocol -H "Testno: 1455"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^PROXY TCP4 %CLIENTIP %HOSTIP (\d*) %HTTPPORT/proxy-line/
</strippart>
<protocol>
proxy-line
GET /1455 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: 1455

</protocol>
</verify>
</testcase>







|














|



|




33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
<name>
HTTP GET when PROXY Protocol enabled
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --haproxy-protocol -H "Testno: %TESTNUMBER"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^PROXY TCP4 %CLIENTIP %HOSTIP (\d*) %HTTPPORT/proxy-line/
</strippart>
<protocol>
proxy-line
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: %TESTNUMBER

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1456.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with PROXY protocol
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/1456" --haproxy-protocol
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
# Strip off the (random) local port number. This test used to use a fixed
# local port number that frequently causes the test to fail
<strippart>
s/PROXY TCP6 ::1 ::1 (\d+) (\d+)/PROXY TCP6 ::1 ::1 $2/
</strippart>
<protocol>
PROXY TCP6 ::1 ::1 %HTTP6PORT
GET /1456 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|
















|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with PROXY protocol
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/%TESTNUMBER" --haproxy-protocol
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
# Strip off the (random) local port number. This test used to use a fixed
# local port number that frequently causes the test to fail
<strippart>
s/PROXY TCP6 ::1 ::1 (\d+) (\d+)/PROXY TCP6 ::1 ::1 $2/
</strippart>
<protocol>
PROXY TCP6 ::1 ::1 %HTTP6PORT
GET /%TESTNUMBER HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1457.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
protocol
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>

</reply>

# Client-side
<client>
<server>
http
</server>

<name>
Check if %{stderr} and %{stdout} switch between stdout and stderr.
</name>
<command>
http://%HOSTIP:%HTTPPORT/1457 --silent --write-out 'line1%{stderr}line2%{stdout}line3'
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
line1line3
</stdout>
<stderr nonewline="yes">
line2
</stderr>
<protocol>
GET /1457 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>











|



















|







|











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
protocol
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>

</reply>

# Client-side
<client>
<server>
http
</server>

<name>
Check if %{stderr} and %{stdout} switch between stdout and stderr.
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --silent --write-out 'line1%{stderr}line2%{stdout}line3'
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
line1line3
</stdout>
<stderr nonewline="yes">
line2
</stderr>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1458.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
<name>
HTTP with wildcard --resolve
</name>
<command>
--resolve *:%HTTPPORT:%HOSTIP http://example.com:%HTTPPORT/1458
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1458 HTTP/1.1
Host: example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
<name>
HTTP with wildcard --resolve
</name>
<command>
--resolve *:%HTTPPORT:%HOSTIP http://example.com:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1459.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
mkdir -p %PWD/log/test1459.dir/.ssh
</precheck>
<features>
sftp
</features>
 <name>
SFTP with corrupted known_hosts
 </name>
 <command>
-u : sftp://%HOSTIP:%SSHPORT/ -l
</command>
<file name="log/test1459.dir/.ssh/known_hosts">
|1|qy29Y1x/+/F39AzdG5515YSSw+c=|iB2WX5jrU3ZTWc+ZfGau7HHEvBc= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAynDN8cDJ3xNzRjTNNGciSHSxpubxhZ6YnkLdp1TkrGW8n\
R93Ey5VtBeBblYTRlFXBWJgKFcTKBRJ/O4qBZwbUgt10AHj31i6h8NehfT19tR8wG/YCmj3KtYLHmwdzmW1edEL9G2NdX2KiKYv7/zuly3QvmP0QA0NhWkAz0KdWNM=
</file>
<setenv>
CURL_HOME=%PWD/log/test1459.dir
</setenv>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
60







|










|




|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
mkdir -p %PWD/log/test%TESTNUMBER.dir/.ssh
</precheck>
<features>
sftp
</features>
 <name>
SFTP with corrupted known_hosts
 </name>
 <command>
-u : sftp://%HOSTIP:%SSHPORT/ -l
</command>
<file name="log/test%TESTNUMBER.dir/.ssh/known_hosts">
|1|qy29Y1x/+/F39AzdG5515YSSw+c=|iB2WX5jrU3ZTWc+ZfGau7HHEvBc= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAynDN8cDJ3xNzRjTNNGciSHSxpubxhZ6YnkLdp1TkrGW8n\
R93Ey5VtBeBblYTRlFXBWJgKFcTKBRJ/O4qBZwbUgt10AHj31i6h8NehfT19tR8wG/YCmj3KtYLHmwdzmW1edEL9G2NdX2KiKYv7/zuly3QvmP0QA0NhWkAz0KdWNM=
</file>
<setenv>
CURL_HOME=%PWD/log/test%TESTNUMBER.dir
</setenv>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
60
Changes to jni/curl/tests/data/test146.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
ftp
</server>
 <name>
persistent FTP with different paths
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/first/dir/here/146 ftp://%HOSTIP:%FTPPORT/146
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD first
CWD dir
CWD here
EPSV
TYPE I
SIZE 146
RETR 146
CWD /
EPSV
SIZE 146
RETR 146
QUIT
</protocol>
</verify>
</testcase>







|



















|
|


|
|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
ftp
</server>
 <name>
persistent FTP with different paths
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/first/dir/here/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD first
CWD dir
CWD here
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
CWD /
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1460.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#
<reply>
<data nocheck="yes">
HTTP/1.1 200 swsclose
  12345
fooo
54 3 2 1
Content-Disposition: filename=name1460; charset=funny; option=strange

</data>
</reply>

#
# Client-side
<client>







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#
<reply>
<data nocheck="yes">
HTTP/1.1 200 swsclose
  12345
fooo
54 3 2 1
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange

</data>
</reply>

#
# Client-side
<client>
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<name>
HTTP GET with -Ji and Content-Disposition with existing file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1460 -Ji -O
</command>
<file name="log/name1460">
initial content
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
# Warning: --include and --remote-header-name cannot be combined.
<errorcode>
2
</errorcode>
<file name="log/name1460">
initial content
</file>

</verify>
</testcase>







|

|











|





33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<name>
HTTP GET with -Ji and Content-Disposition with existing file
</name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -Ji -O
</command>
<file name="log/name%TESTNUMBER">
initial content
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
# Warning: --include and --remote-header-name cannot be combined.
<errorcode>
2
</errorcode>
<file name="log/name%TESTNUMBER">
initial content
</file>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1461.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<errorcode>
0
</errorcode>
<stdout mode="text">
Usage: curl [options...] <url>
 -d, --data <data>   HTTP POST data
 -f, --fail          Fail silently (no output at all) on HTTP errors
 -h, --help <category> Get help for commands
 -i, --include       Include protocol response headers in the output
 -o, --output <file> Write to file instead of stdout
 -O, --remote-name   Write output to a file named as the remote file
 -s, --silent        Silent mode
 -T, --upload-file <file> Transfer local FILE to destination
 -u, --user <user:password> Server user and password
 -A, --user-agent <name> Send User-Agent <name> to server
 -v, --verbose       Make the operation more talkative
 -V, --version       Show version number and quit

This is not the full help, this menu is stripped into categories.
Use "--help category" to get an overview of all categories.
For all options use the manual or "--help all".
</stdout>







|

|


|
|
|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<errorcode>
0
</errorcode>
<stdout mode="text">
Usage: curl [options...] <url>
 -d, --data <data>   HTTP POST data
 -f, --fail          Fail silently (no output at all) on HTTP errors
 -h, --help <category>  Get help for commands
 -i, --include       Include protocol response headers in the output
 -o, --output <file>  Write to file instead of stdout
 -O, --remote-name   Write output to a file named as the remote file
 -s, --silent        Silent mode
 -T, --upload-file <file>  Transfer local FILE to destination
 -u, --user <user:password>  Server user and password
 -A, --user-agent <name>  Send User-Agent <name> to server
 -v, --verbose       Make the operation more talkative
 -V, --version       Show version number and quit

This is not the full help, this menu is stripped into categories.
Use "--help category" to get an overview of all categories.
For all options use the manual or "--help all".
</stdout>
Changes to jni/curl/tests/data/test1463.
33
34
35
36
37
38
39
40
41
42
43
44
45
<verify>
<errorcode>
0
</errorcode>
<stdout mode="text">
Usage: curl [options...] <url>
file: FILE protocol options
     --create-file-mode File mode for created files
 -I, --head          Show document info only
 -r, --range <range> Retrieve only the bytes within RANGE
</stdout>
</verify>
</testcase>







|

|



33
34
35
36
37
38
39
40
41
42
43
44
45
<verify>
<errorcode>
0
</errorcode>
<stdout mode="text">
Usage: curl [options...] <url>
file: FILE protocol options
     --create-file-mode <mode>  File mode (octal) for created files
 -I, --head          Show document info only
 -r, --range <range>  Retrieve only the bytes within RANGE
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1464.
33
34
35
36
37
38
39
40
41
42
43
44
45
<verify>
<errorcode>
0
</errorcode>
<stdout mode="text">
Usage: curl [options...] <url>
file: FILE protocol options
     --create-file-mode File mode for created files
 -I, --head          Show document info only
 -r, --range <range> Retrieve only the bytes within RANGE
</stdout>
</verify>
</testcase>







|

|



33
34
35
36
37
38
39
40
41
42
43
44
45
<verify>
<errorcode>
0
</errorcode>
<stdout mode="text">
Usage: curl [options...] <url>
file: FILE protocol options
     --create-file-mode <mode>  File mode (octal) for created files
 -I, --head          Show document info only
 -r, --range <range>  Retrieve only the bytes within RANGE
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1465.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test147.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
ftp
</server>
 <name>
FTP with --ftp-create-dirs (failing CWD)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/first/dir/here/147 --ftp-create-dirs
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
ftp
</server>
 <name>
FTP with --ftp-create-dirs (failing CWD)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/first/dir/here/%TESTNUMBER --ftp-create-dirs
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
43
44
45
46
47
48
49
50
51
52
53
54
55
CWD first
MKD first
CWD first
CWD dir
CWD here
EPSV
TYPE I
SIZE 147
RETR 147
QUIT
</protocol>
</verify>
</testcase>







|
|




43
44
45
46
47
48
49
50
51
52
53
54
55
CWD first
MKD first
CWD first
CWD dir
CWD here
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test148.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP with --ftp-create-dirs (failing MKD)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/attempt/to/get/this/148 --ftp-create-dirs
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP with --ftp-create-dirs (failing MKD)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/attempt/to/get/this/%TESTNUMBER --ftp-create-dirs
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
Changes to jni/curl/tests/data/test149.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP with multiple uploads
 </name>
 <command>
-T log/upload149 ftp://%HOSTIP:%FTPPORT/dir1/149 -T log/upload149 ftp://%HOSTIP:%FTPPORT/dir2/149
</command>
<file name="log/upload149">
send away this contents
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD dir1
EPSV
TYPE I
STOR 149
CWD /
CWD dir2
EPSV
STOR 149
QUIT
</protocol>
<file name="log/upload149">
send away this contents
</file>
</verify>
</testcase>







|

|


















|



|


|




14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
</server>
 <name>
FTP with multiple uploads
 </name>
 <command>
-T log/upload%TESTNUMBER ftp://%HOSTIP:%FTPPORT/dir1/%TESTNUMBER -T log/upload%TESTNUMBER ftp://%HOSTIP:%FTPPORT/dir2/%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
send away this contents
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD dir1
EPSV
TYPE I
STOR %TESTNUMBER
CWD /
CWD dir2
EPSV
STOR %TESTNUMBER
QUIT
</protocol>
<file name="log/upload%TESTNUMBER">
send away this contents
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test15.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
--write-out test
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 200 OK
Fake: yes
Fake: yes
Fake: yes
Content-Length: 26

Repeated nonsense-headers
http://%HOSTIP:%HTTPPORT/want/15 200 26
</stdout>
<protocol>
GET /want/15 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|













|


|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
--write-out test
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER --write-out "%{url_effective} %{http_code} %{size_download}\n"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 200 OK
Fake: yes
Fake: yes
Fake: yes
Content-Length: 26

Repeated nonsense-headers
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER 200 26
</stdout>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test150.
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/150 -u testuser:testpass --ntlm --fail
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /150 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /150 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|









|





|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm --fail
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test1500.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 all good!
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 12
Connection: close

Hello World
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib1500
</tool>

 <name>
curl_multi_wait
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1500
</command>
</client>
</testcase>













|



















|






|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 all good!
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 12
Connection: close

Hello World
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
curl_multi_wait
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>
</testcase>
Changes to jni/curl/tests/data/test1501.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib1501
</tool>
 <name>
FTP with multi interface and slow LIST response 
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/1501/
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD 1501
EPSV
TYPE A
LIST
QUIT
</protocol>

</verify>







|





|











|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP with multi interface and slow LIST response 
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD %TESTNUMBER
EPSV
TYPE A
LIST
QUIT
</protocol>

</verify>
Changes to jni/curl/tests/data/test1502.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib1502
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence UA
 </name>
 <command>
http://google.com:%HTTPPORT/1502 %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1502 HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>













|




















|





|







|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence UA
 </name>
 <command>
http://google.com:%HTTPPORT/%TESTNUMBER %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1503.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib1503
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence PA
 </name>
 <command>
http://google.com:%HTTPPORT/1503 %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1503 HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>













|




















|





|







|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence PA
 </name>
 <command>
http://google.com:%HTTPPORT/%TESTNUMBER %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1504.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib1504
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence UB
 </name>
 <command>
http://google.com:%HTTPPORT/1504 %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1504 HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>













|




















|





|







|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence UB
 </name>
 <command>
http://google.com:%HTTPPORT/%TESTNUMBER %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1505.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib1505
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence PB
 </name>
 <command>
http://google.com:%HTTPPORT/1505 %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1505 HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>













|




















|





|







|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
CURLOPT_RESOLVE
</keywords>
</info>

<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP multi with CURLOPT_RESOLVE, cleanup sequence PB
 </name>
 <command>
http://google.com:%HTTPPORT/%TESTNUMBER %HTTPPORT %HOSTIP
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: google.com:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1506.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65




66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<testcase>
<info>
<keywords>
HTTP
multi
verbose logs
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data1>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data2>
<data3>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data3>
<data4>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data4>
</reply>

# Client-side
<client>
<server>
http
</server>
<tool>
lib1506
</tool>
 <name>
HTTP GET connection cache limit (CURLMOPT_MAXCONNECTS)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/1506 %HOSTIP %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/15060001 HTTP/1.1




Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/15060002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/15060003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/15060004 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<strip>
^Host:.*
</strip>
<file name="log/stderr1506" mode="text">
* Connection #0 to host server1.example.com left intact
* Connection #1 to host server2.example.com left intact
* Connection #2 to host server3.example.com left intact
* Closing connection 0
* Connection #3 to host server4.example.com left intact
</file>
<stripfile>













|







|







|







|













|





|






|
>
>
>
>



|



<
<
<
<
|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76




77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<testcase>
<info>
<keywords>
HTTP
multi
verbose logs
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data1>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data2>
<data3>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data3>
<data4>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data4>
</reply>

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP GET connection cache limit (CURLMOPT_MAXCONNECTS)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/%TESTNUMBER %HOSTIP %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*





GET /path/%TESTNUMBER0004 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<strip>
^Host:.*
</strip>
<file name="log/stderr%TESTNUMBER" mode="text">
* Connection #0 to host server1.example.com left intact
* Connection #1 to host server2.example.com left intact
* Connection #2 to host server3.example.com left intact
* Closing connection 0
* Connection #3 to host server4.example.com left intact
</file>
<stripfile>
Changes to jni/curl/tests/data/test1507.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#
# Client-side
<client>
<server>
smtp
</server>
<tool>
lib1507
</tool>

# based on bug report #1184
 <name>
SMTP with multi interface and CURLE_ABORTED_BY_CALLBACK
 </name>
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/1507
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 1507
MAIL FROM:<1507-realuser@example.com>
RCPT TO:<1507-recipient@example.com>
DATA
</protocol>
<upload>
</upload>
</verify>
</testcase>







|













|







|
|
|






14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#
# Client-side
<client>
<server>
smtp
</server>
<tool>
lib%TESTNUMBER
</tool>

# based on bug report #1184
 <name>
SMTP with multi interface and CURLE_ABORTED_BY_CALLBACK
 </name>
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<%TESTNUMBER-realuser@example.com>
RCPT TO:<%TESTNUMBER-recipient@example.com>
DATA
</protocol>
<upload>
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1508.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# Client-side
<client>
<server>
none
</server>
<tool>
lib1508
</tool>
 <name>
Close a multi handle without using it
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/path/1508
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<file name="log/stdout1508">
We are done
</file>
</verify>
</testcase>







|





|





|




8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# Client-side
<client>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
Close a multi handle without using it
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<file name="log/stdout%TESTNUMBER">
We are done
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1509.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
HTTP/1.1 200 Mighty fine indeed
Server: the beast that eats naughty clients

</connect>

<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

</data>
<datacheck>
HTTP/1.1 200 Mighty fine indeed
Server: the beast that eats naughty clients

HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

header length is ........: 245
header length should be..: 245
</datacheck>
</reply>

# Client-side
<client>
<server>
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib1509
</tool>
<features>
proxy
</features>
 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://the.old.moo.1509:%HTTPPORT/1509 %HOSTIP:%PROXYPORT
</command>
<file name="log/test1509.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1509:%HTTPPORT HTTP/1.1
Host: the.old.moo.1509:%HTTPPORT
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /1509 HTTP/1.1
Host: the.old.moo.1509:%HTTPPORT
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|










|

















|








|

|











|
|




|
|






18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
HTTP/1.1 200 Mighty fine indeed
Server: the beast that eats naughty clients

</connect>

<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

</data>
<datacheck>
HTTP/1.1 200 Mighty fine indeed
Server: the beast that eats naughty clients

HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

header length is ........: 245
header length should be..: 245
</datacheck>
</reply>

# Client-side
<client>
<server>
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
<features>
proxy
</features>
 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://the.old.moo.%TESTNUMBER:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test151.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with an error code that might trick authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/151
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /151 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with an error code that might trick authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1510.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65




66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<testcase>
<info>
<keywords>
HTTP
verbose logs
flaky
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data1>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data2>
<data3>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data3>
<data4>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data4>
</reply>

# Client-side
<client>
<server>
http
</server>
<tool>
lib1510
</tool>
 <name>
HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/1510 %HOSTIP %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/15100001 HTTP/1.1




Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/15100002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/15100003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/15100004 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<strip>
^Host:.*
</strip>
<file name="log/stderr1510" mode="text">
* Connection #0 to host server1.example.com left intact
* Connection #1 to host server2.example.com left intact
* Connection #2 to host server3.example.com left intact
* Closing connection 0
* Connection #3 to host server4.example.com left intact
</file>
<stripfile>













|







|







|







|













|





|






|
>
>
>
>



|



<
<
<
<
|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76




77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<testcase>
<info>
<keywords>
HTTP
verbose logs
flaky
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data1>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data2>
<data3>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data3>
<data4>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data4>
</reply>

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/%TESTNUMBER %HOSTIP %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*





GET /path/%TESTNUMBER0004 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<strip>
^Host:.*
</strip>
<file name="log/stderr%TESTNUMBER" mode="text">
* Connection #0 to host server1.example.com left intact
* Connection #1 to host server2.example.com left intact
* Connection #2 to host server3.example.com left intact
* Closing connection 0
* Connection #3 to host server4.example.com left intact
</file>
<stripfile>
Changes to jni/curl/tests/data/test1511.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fakem
Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT
Content-Type: text/html
Content-Length: 12
Connection: close

Hello World
</data>

<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fakem
Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT
Content-Type: text/html
Content-Length: 12
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fakem
Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT
Content-Type: text/html
Content-Length: 12
Connection: close

Hello World
</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
<tool>
lib1511
</tool>
<name>
HTTP GET time conditions in repeated requests
</name>
<command>
http://%HOSTIP:%HTTPPORT/1511
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>
120
</errorcode>
</verify>
</testcase>











|











|







|




















|





|











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fakem
Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT
Content-Type: text/html
Content-Length: 12
Connection: close

Hello World
</data>

<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fakem
Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT
Content-Type: text/html
Content-Length: 12
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fakem
Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT
Content-Type: text/html
Content-Length: 12
Connection: close

Hello World
</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
<tool>
lib%TESTNUMBER
</tool>
<name>
HTTP GET time conditions in repeated requests
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>
120
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1512.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
GLOBAL DNS CACHE
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data1>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data2>
<data3>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data3>
<data4>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data4>
</reply>

# Client-side
<client>
<server>
http
</server>
<tool>
lib1512
</tool>
 <name>
GLOBAL CACHE test over two easy performs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/1512 %HOSTIP %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/15120001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/15120002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<strip>
^Host:.*
</strip>












|







|







|







|













|





|






|



|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
GLOBAL DNS CACHE
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data1>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data2>
<data3>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data3>
<data4>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data4>
</reply>

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
GLOBAL CACHE test over two easy performs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/%TESTNUMBER %HOSTIP %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<strip>
^Host:.*
</strip>
Changes to jni/curl/tests/data/test1513.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# Client-side
<client>
<server>
http
</server>
<tool>
lib1513
</tool>
 <name>
return failure immediately from progress callback
 </name>

# this server/host won't be used for real
 <command>
http://%HOSTIP:%HTTPPORT/1513
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
</protocol>







|







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
return failure immediately from progress callback
 </name>

# this server/host won't be used for real
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
</protocol>
Changes to jni/curl/tests/data/test1514.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# Client-side
<client>
<server>
http
</server>
<tool>
lib1514
</tool>
<name>
HTTP POST with read callback and unknown data size
</name>
<command>
http://%HOSTIP:%HTTPPORT/1514
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Content-Length header is not present
# Transfer-Encoding header is added automatically
<protocol>
POST /1514 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

1







|





|








|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
HTTP POST with read callback and unknown data size
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# Content-Length header is not present
# Transfer-Encoding header is added automatically
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

1
Changes to jni/curl/tests/data/test1515.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</reply>

<client>
<server>
http
</server>
<tool>
lib1515
</tool>
<name>
caching of manual libcurl DNS entries after DNS cache timeout
</name>
<command>
path/1515 %HOSTIP %HTTPPORT
</command>
</client>

<verify>
<errorcode>
0
</errorcode>







|





|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</reply>

<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
caching of manual libcurl DNS entries after DNS cache timeout
</name>
<command>
path/%TESTNUMBER %HOSTIP %HTTPPORT
</command>
</client>

<verify>
<errorcode>
0
</errorcode>
Changes to jni/curl/tests/data/test1516.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<tool>
lib1515
</tool>
<name>
caching of manual libcurl DNS entries after dead connection
</name>
<command>
/path/1516 %HOSTIP %HTTPPORT
</command>
</client>

<verify>
<errorcode>
0
</errorcode>







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<tool>
lib1515
</tool>
<name>
caching of manual libcurl DNS entries after dead connection
</name>
<command>
/path/%TESTNUMBER %HOSTIP %HTTPPORT
</command>
</client>

<verify>
<errorcode>
0
</errorcode>
Changes to jni/curl/tests/data/test1517.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1517
</tool>

 <name>
HTTP POST, server responds before completed send
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1517
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(this is what we post to the silly web server)(\r)?\n//
</strippart>
<protocol>
POST /1517 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 45
Content-Type: application/x-www-form-urlencoded

</protocol>
<errorcode>







|






|










|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP POST, server responds before completed send
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(this is what we post to the silly web server)(\r)?\n//
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 45
Content-Type: application/x-www-form-urlencoded

</protocol>
<errorcode>
Changes to jni/curl/tests/data/test1518.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1518
</tool>

 <name>
Extract Location: with broken URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1518
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>

</strippart>
<protocol>
</protocol>
<stdout>
res: 0
status: 302
redirects: 0
effectiveurl: http://%HOSTIP:%HTTPPORT/1518
redirecturl: http://1.2 .4.5/test
</stdout>
<errorcode>
0
</errorcode>
</verify>
</testcase>







|






|















|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Extract Location: with broken URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>

</strippart>
<protocol>
</protocol>
<stdout>
res: 0
status: 302
redirects: 0
effectiveurl: http://%HOSTIP:%HTTPPORT/%TESTNUMBER
redirecturl: http://1.2 .4.5/test
</stdout>
<errorcode>
0
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1519.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
lib1518
</tool>

 <name>
Extract Location: with broken absolute URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1519
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>

</strippart>
<protocol>
</protocol>
<stdout>
res: 0
status: 302
redirects: 0
effectiveurl: http://%HOSTIP:%HTTPPORT/1519
redirecturl: http://%HOSTIP:%HTTPPORT/h%20ttp://1.2.4.5/test
</stdout>
<errorcode>
0
</errorcode>
</verify>
</testcase>







|















|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
lib1518
</tool>

 <name>
Extract Location: with broken absolute URL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>

</strippart>
<protocol>
</protocol>
<stdout>
res: 0
status: 302
redirects: 0
effectiveurl: http://%HOSTIP:%HTTPPORT/%TESTNUMBER
redirecturl: http://%HOSTIP:%HTTPPORT/h%20ttp://1.2.4.5/test
</stdout>
<errorcode>
0
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test152.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
HTTP GET with an error code that might trick authentication and --fail
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/152 --fail
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /152 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
22







|






|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
HTTP GET with an error code that might trick authentication and --fail
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --fail
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
22
Changes to jni/curl/tests/data/test1520.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#
# Client-side
<client>
<server>
smtp
</server>
<tool>
lib1520
</tool>

 <name>
SMTP with CRLF-dot-CRLF in data
 </name>
<stdin>
From: different
To: another


.
.

.

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/1520
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 1520
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|


















|







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#
# Client-side
<client>
<server>
smtp
</server>
<tool>
lib%TESTNUMBER
</tool>

 <name>
SMTP with CRLF-dot-CRLF in data
 </name>
<stdin>
From: different
To: another


.
.

.

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test1521.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#
# Client-side
<client>
<server>
none
</server>
<tool>
lib1521
</tool>

 <name>
Test all curl_easy_setopt and curl_easy_getinfo options
 </name>
 <command>
unused







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#
# Client-side
<client>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>

 <name>
Test all curl_easy_setopt and curl_easy_getinfo options
 </name>
 <command>
unused
Changes to jni/curl/tests/data/test1522.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
CURLINFO_SIZE_UPLOAD
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib1522
</tool>

<name>
CURLINFO_SIZE_UPLOAD with small SO_SNDBUF
</name>

<command>
http://%HOSTIP:%HTTPPORT/1522
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
-foo-
uploadSize = 40960
!!!!!!!!!! PASS
</stdout>
</verify>
</testcase>











|



















|







|













1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
CURLINFO_SIZE_UPLOAD
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
CURLINFO_SIZE_UPLOAD with small SO_SNDBUF
</name>

<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
-foo-
uploadSize = 40960
!!!!!!!!!! PASS
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1523.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
CURLINFO_LOW_SPEED_LIMIT
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close
Funny-head: yesyes

AA
</data>
<servercmd>
writedelay: 1
</servercmd>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib1523
</tool>

<name>
CURLINFO_LOW_SPEED_LIMIT
</name>

<command>
http://%HOSTIP:%HTTPPORT/1523
</command>
<killserver>
http
</killserver>
</client>

#
# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>











|

















|







|











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
CURLINFO_LOW_SPEED_LIMIT
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close
Funny-head: yesyes

AA
</data>
<servercmd>
writedelay: 1
</servercmd>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
CURLINFO_LOW_SPEED_LIMIT
</name>

<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<killserver>
http
</killserver>
</client>

#
# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1524.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/15240002
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/15240002
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT with 303 redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/1524 -L -T log/upload1524.txt
</command>
<file name="log/upload1524.txt">
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
PUT /blah/1524 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 4
Expect: 100-continue

moo
GET /blah/moo.html&testcase=/15240002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*


</protocol>
</verify>
</testcase>













|












|




















|

|








|







|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 303 OK swsclose
Location: moo.html&testcase=/%TESTNUMBER0002
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT with 303 redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/blah/%TESTNUMBER -L -T log/upload%TESTNUMBER.txt
</command>
<file name="log/upload%TESTNUMBER.txt">
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
PUT /blah/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 4
Expect: 100-continue

moo
GET /blah/moo.html&testcase=/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*


</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1525.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<reply>
<connect>
HTTP/1.1 200 OK

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</data>
<datacheck>
HTTP/1.1 200 OK

HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</datacheck>

</reply>
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib1525
</tool>
 <name>
CURLOPT_PROXYHEADER is ignored CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.1525:%HTTPPORT/1525 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1525:%HTTPPORT HTTP/1.1
Host: the.old.moo.1525:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: Http Agent

</proxy>
<protocol>
PUT /1525 HTTP/1.1
Host: the.old.moo.1525:%HTTPPORT
Accept: */*
User-Agent: Http Agent
Content-Length: 13
Expect: 100-continue

Hello Cloud!
</protocol>







|








|













|





|









|
|





|
|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<reply>
<connect>
HTTP/1.1 200 OK

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</data>
<datacheck>
HTTP/1.1 200 OK

HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</datacheck>

</reply>
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
CURLOPT_PROXYHEADER is ignored CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.%TESTNUMBER:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: Http Agent

</proxy>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Accept: */*
User-Agent: Http Agent
Content-Length: 13
Expect: 100-continue

Hello Cloud!
</protocol>
Changes to jni/curl/tests/data/test1526.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<connect>
HTTP/1.1 200 OK
Server: present

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</data>
<datacheck>
HTTP/1.1 200 OK
Server: present

HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</datacheck>
</reply>

# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib1526
</tool>
 <name>
CURLOPT_PROXYHEADER: separate host/proxy headers
 </name>
 <command>
 http://the.old.moo.1526:%HTTPPORT/1526 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1526:%HTTPPORT HTTP/1.1
Host: the.old.moo.1526:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: Proxy Agent

</proxy>
<protocol>
PUT /1526 HTTP/1.1
Host: the.old.moo.1526:%HTTPPORT
Accept: */*
User-Agent: Http Agent
Content-Length: 13
Expect: 100-continue

Hello Cloud!
</protocol>







|









|













|





|









|
|





|
|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<connect>
HTTP/1.1 200 OK
Server: present

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</data>
<datacheck>
HTTP/1.1 200 OK
Server: present

HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</datacheck>
</reply>

# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
CURLOPT_PROXYHEADER: separate host/proxy headers
 </name>
 <command>
 http://the.old.moo.%TESTNUMBER:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: Proxy Agent

</proxy>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Accept: */*
User-Agent: Http Agent
Content-Length: 13
Expect: 100-continue

Hello Cloud!
</protocol>
Changes to jni/curl/tests/data/test1527.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<connect>
HTTP/1.1 200 OK
We-are: good

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</data>
<datacheck>
HTTP/1.1 200 OK
We-are: good

HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</datacheck>

</reply>
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib1527
</tool>
 <name>
Check same headers are generated with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.1527:%HTTPPORT/1527 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1527:%HTTPPORT HTTP/1.1
Host: the.old.moo.1527:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: Http Agent
Expect: 100-continue

</proxy>
<protocol>
PUT /1527 HTTP/1.1
Host: the.old.moo.1527:%HTTPPORT
Accept: */*
User-Agent: Http Agent
Expect: 100-continue
Content-Length: 13

Hello Cloud!
</protocol>







|









|













|





|









|
|






|
|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<connect>
HTTP/1.1 200 OK
We-are: good

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</data>
<datacheck>
HTTP/1.1 200 OK
We-are: good

HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
</datacheck>

</reply>
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
Check same headers are generated with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.%TESTNUMBER:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: Http Agent
Expect: 100-continue

</proxy>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Accept: */*
User-Agent: Http Agent
Expect: 100-continue
Content-Length: 13

Hello Cloud!
</protocol>
Changes to jni/curl/tests/data/test1528.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<connect>
HTTP/1.1 200 OK
We-are: good

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Content-Length: 5

stop
</data>

</reply>
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib1528
</tool>
 <name>
Separately specified proxy/server headers sent in a proxy GET
 </name>
 <command>
 http://the.old.moo:%HTTPPORT/1528 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
GET http://the.old.moo:%HTTPPORT/1528 HTTP/1.1
Host: the.old.moo:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
User-Agent: Http Agent
Proxy-User-Agent: Http Agent2

</proxy>
</verify>
</testcase>







|
















|





|









|









14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<connect>
HTTP/1.1 200 OK
We-are: good

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Content-Length: 5

stop
</data>

</reply>
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
Separately specified proxy/server headers sent in a proxy GET
 </name>
 <command>
 http://the.old.moo:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
GET http://the.old.moo:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: the.old.moo:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
User-Agent: Http Agent
Proxy-User-Agent: Http Agent2

</proxy>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1529.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib1529
</tool>
 <name>
HTTP request-injection in URL sent over proxy
 </name>
 <command>
 "http://the.old.moo:%HTTPPORT/1529" %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# it should be detected and an error should be reported







|





|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Client-side
<client>
<server>
http
http-proxy
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP request-injection in URL sent over proxy
 </name>
 <command>
 "http://the.old.moo:%HTTPPORT/%TESTNUMBER" %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# it should be detected and an error should be reported
Changes to jni/curl/tests/data/test153.
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization with stale=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1530001 -u testuser:testpass --digest http://%HOSTIP:%HTTPPORT/1530002
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^Authorization.*cnonce
</strip>
<protocol>
GET /1530001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1530001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530001", response="f4f83139396995bac665f24a1f1055c7"
User-Agent: curl/%VERSION
Accept: */*

GET /1530002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1530002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530002", response="f84511b014fdd0ba6494f42871079c32"
User-Agent: curl/%VERSION
Accept: */*

GET /1530002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/1530002", cnonce="MTA4MzIy", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm=MD5
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2







|









|




|

|



|




|

|



|

|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization with stale=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -u testuser:testpass --digest http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^Authorization.*cnonce
</strip>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0001", response="f4f83139396995bac665f24a1f1055c7"
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0002", response="f84511b014fdd0ba6494f42871079c32"
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/%TESTNUMBER0002", cnonce="MTA4MzIy", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm=MD5
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
Changes to jni/curl/tests/data/test1530.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<server>
none
</server>
<features>
http
</features>
<tool>
lib1530
</tool>
 <name>
CURLOPT_OPENSOCKETFUNCTION returns bad socket
 </name>
</client>

# it should be detected and an error should be reported







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<server>
none
</server>
<features>
http
</features>
<tool>
lib%TESTNUMBER
</tool>
 <name>
CURLOPT_OPENSOCKETFUNCTION returns bad socket
 </name>
</client>

# it should be detected and an error should be reported
Changes to jni/curl/tests/data/test1531.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test1532.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1532
</tool>
<name>
Test CURLINFO_RESPONSE_CODE
</name>
<command>
http://%HOSTIP:%HTTPPORT/1532
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1532 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>







|





|







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
<name>
Test CURLINFO_RESPONSE_CODE
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>
Changes to jni/curl/tests/data/test1533.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47






48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Server-side
<reply>
<servercmd>
auth_required
</servercmd>
<data nocheck="yes">
HTTP/1.1 401 Authorization Required
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 15

Early Response
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<tool>
lib1533
</tool>
<name>
HTTP with CURLOPT_KEEP_SENDING_ON_ERROR and an early error response
</name>
<command>
http://%HOSTIP:%HTTPPORT/1533
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>
120
</errorcode>
<protocol nonewline="yes">
POST /1533 HTTP/1.1






Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

POST /1533 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

POST /1533 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

aaaPOST /1533 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

aaa
</protocol>







|












|





|










|
>
>
>
>
>
>





|





<
<
<
<
<
<
|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64






65
66
67
68
69
70
71
72
# Server-side
<reply>
<servercmd>
auth_required
</servercmd>
<data nocheck="yes">
HTTP/1.1 401 Authorization Required
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 15

Early Response
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
HTTP with CURLOPT_KEEP_SENDING_ON_ERROR and an early error response
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>
120
</errorcode>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded







aaaPOST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

aaa
</protocol>
Changes to jni/curl/tests/data/test1534.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1534
</tool>
<name>
CURLINFO_FILETIME init and reset
</name>
<command>
http://%HOSTIP:%HTTPPORT/1534
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1534 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>







|





|







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
<name>
CURLINFO_FILETIME init and reset
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>
Changes to jni/curl/tests/data/test1535.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1535
</tool>
<name>
Test CURLINFO_RESPONSE_CODE CURLINFO_PROTOCOL
</name>
<command>
http://%HOSTIP:%HTTPPORT/1535
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1535 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>







|





|







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
<name>
Test CURLINFO_RESPONSE_CODE CURLINFO_PROTOCOL
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>
Changes to jni/curl/tests/data/test1536.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1536
</tool>
<name>
Test CURLINFO_RESPONSE_CODE CURLINFO_SCHEME
</name>
<command>
http://%HOSTIP:%HTTPPORT/1536
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1536 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>







|





|







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
<name>
Test CURLINFO_RESPONSE_CODE CURLINFO_SCHEME
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<errorcode>
0
</errorcode>
Changes to jni/curl/tests/data/test1537.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# Client-side
<client>
<server>
none
</server>
<tool>
lib1537
</tool>

<name>
libcurl URL escape/unescape tests
</name>
<command>
nothing







|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# Client-side
<client>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
libcurl URL escape/unescape tests
</name>
<command>
nothing
Changes to jni/curl/tests/data/test1538.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# Client-side
<client>
<server>
none
</server>
<tool>
lib1538
</tool>

<name>
libcurl strerror API call tests
</name>
<command>
nothing







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# Client-side
<client>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
libcurl strerror API call tests
</name>
<command>
nothing
Changes to jni/curl/tests/data/test1539.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# Client-side
<client>
<server>
http
</server>
<tool>
lib1539
</tool>
<name>
HTTP 1.0 POST with read callback and unknown data size
</name>
<command>
http://%HOSTIP:%HTTPPORT/1539
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
25







|





|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
HTTP 1.0 POST with read callback and unknown data size
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
25
Changes to jni/curl/tests/data/test154.
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
!SSPI
crypto
</features>
 <name>
HTTP PUT with --anyauth authorization (picking Digest)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/154 -T log/put154 -u testuser:testpass --anyauth
</command>
<file name="log/put154">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /154 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

PUT /154 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/154", response="b71551e12d1c456e47d8388ecb2edeca"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line







|

|










|






|

|







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
!SSPI
crypto
</features>
 <name>
HTTP PUT with --anyauth authorization (picking Digest)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="b71551e12d1c456e47d8388ecb2edeca"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
Changes to jni/curl/tests/data/test1540.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</reply>
# Client-side
<client>
<server>
http
</server>
<tool>
lib1540
</tool>
 <name>
chunked with trailers and pausing the receive
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1540
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1540 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|





|






|






38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</reply>
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
chunked with trailers and pausing the receive
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test155.
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/155 -T log/put155 -u testuser:testpass --anyauth
</command>
<precheck>
chkhostname curlhost
</precheck>
<file name="log/put155">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /155 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

PUT /155 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

PUT /155 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue








|




|










|






|






|







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
</command>
<precheck>
chkhostname curlhost
</precheck>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

Changes to jni/curl/tests/data/test1550.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Client-side
<client>
<server>
none
</server>
# tool is what to use instead of 'curl'
<tool>
lib1550
</tool>

 <name>
verify setting pipeling blocklisting options
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/1550
</command>
</client>
</testcase>







|






|



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Client-side
<client>
<server>
none
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
verify setting pipeling blocklisting options
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER
</command>
</client>
</testcase>
Changes to jni/curl/tests/data/test1551.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51




52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<testcase>
<info>
<keywords>
multi
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Location: /15510002

-foo-
</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 11

redirected
</data2>
<datacheck>
redirected
redirected
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1551
</tool>

 <name>
re-run redirected transfer without setting URL again
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1551
</command>
</client>

<verify>
<protocol>
GET /1551 HTTP/1.1




Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /15510002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /1551 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /15510002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>











|

|





|

















|






|





|
>
>
>
>



|



<
<
<
<
|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62




63
64
65
66
67
68
69
<testcase>
<info>
<keywords>
multi
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Location: /%TESTNUMBER0002

-foo-
</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 11

redirected
</data2>
<datacheck>
redirected
redirected
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
re-run redirected transfer without setting URL again
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*





GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1552.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
imap
</server>
 <name>
IMAP multi transfer error without curl_multi_remove_handle
 </name>
# tool is what to use instead of 'curl'
<tool>
lib1552
</tool>
 <command>
'imap://%HOSTIP:%IMAPPORT/1552/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>







|


|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
imap
</server>
 <name>
IMAP multi transfer error without curl_multi_remove_handle
 </name>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
Changes to jni/curl/tests/data/test1553.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
imap
</server>
 <name>
IMAP cleanup before a connection was created
 </name>
# tool is what to use instead of 'curl'
<tool>
lib1553
</tool>

# this MUST use a host name that doesn't resolve
<command>
imap://non-existing-host.haxx.se:%IMAPPORT/1553
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>







|




|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
imap
</server>
 <name>
IMAP cleanup before a connection was created
 </name>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

# this MUST use a host name that doesn't resolve
<command>
imap://non-existing-host.haxx.se:%IMAPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
Changes to jni/curl/tests/data/test1554.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
shared connections
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 29

run 1: foobar and so on fun!
</data>
<datacheck>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
shared connections
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 29

run 1: foobar and so on fun!
</data>
<datacheck>
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<server>
http
</server>
<name>
HTTP with shared connection cache
</name>
<tool>
lib1554
</tool>
<command>
http://%HOSTIP:%HTTPPORT/1554
</command>
</client>

# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>







|


|







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<server>
http
</server>
<name>
HTTP with shared connection cache
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1555.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# Client-side
<client>
<server>
http
</server>
<tool>
lib1555
</tool>
 <name>
verify api is protected against calls from callbacks
 </name>

# this server/host won't be used for real
 <command>
http://%HOSTIP:%HTTPPORT/1555
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
</protocol>







|







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
verify api is protected against calls from callbacks
 </name>

# this server/host won't be used for real
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
</protocol>
Changes to jni/curl/tests/data/test1556.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib1556
</tool>
 <name>
send long HTTP headers to header callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1556
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1556 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
-foo-
Max: 100008
</stdout>
</verify>
</testcase>







|





|







|










29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
send long HTTP headers to header callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
-foo-
Max: 100008
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1557.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</reply>

<client>
<server>
none
</server>
<tool>
lib1557
</tool>

<name>
Removing easy handle that's in the pending connections list doesn't leave behind a dangling entry
</name>
<command>
nothing







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</reply>

<client>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
Removing easy handle that's in the pending connections list doesn't leave behind a dangling entry
</name>
<command>
nothing
Changes to jni/curl/tests/data/test1558.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
none
</server>
<features>
file
</features>
<tool>
lib1558
</tool>

<name>
CURLINFO_PROTOCOL for file:// transfer
</name>
<command>
file://%FILE_PWD/log/data1558
</command>
<file name="log/data1558">
hello
</file>
</client>

#
# Verify that the test runs to completion without crashing
<verify>







|






|

|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
none
</server>
<features>
file
</features>
<tool>
lib%TESTNUMBER
</tool>

<name>
CURLINFO_PROTOCOL for file:// transfer
</name>
<command>
file://%FILE_PWD/log/data%TESTNUMBER
</command>
<file name="log/data%TESTNUMBER">
hello
</file>
</client>

#
# Verify that the test runs to completion without crashing
<verify>
Changes to jni/curl/tests/data/test1559.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</server>

# require HTTP so that CURLOPT_POSTFIELDS works as assumed
<features>
http
</features>
<tool>
lib1559
</tool>

<name>
Set excessive URL lengths
</name>
</client>








|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</server>

# require HTTP so that CURLOPT_POSTFIELDS works as assumed
<features>
http
</features>
<tool>
lib%TESTNUMBER
</tool>

<name>
Set excessive URL lengths
</name>
</client>

Changes to jni/curl/tests/data/test156.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP PUT with --anyauth (when the server requires none)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/156 -T log/put156 -u testuser:testpass --anyauth
</command>
<file name="log/put156">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /156 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT







|

|










|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP PUT with --anyauth (when the server requires none)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
Changes to jni/curl/tests/data/test1560.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
ftp
ipv6
</features>
 <name>
URL API
 </name>
<tool>
lib1560
</tool>
</client>

<verify>
<stdout>
we got [fe80::20c:29ff:fe9c:409b]
we got https://[::1]/hello.html







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
ftp
ipv6
</features>
 <name>
URL API
 </name>
<tool>
lib%TESTNUMBER
</tool>
</client>

<verify>
<stdout>
we got [fe80::20c:29ff:fe9c:409b]
we got https://[::1]/hello.html
Changes to jni/curl/tests/data/test1561.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: super=secret; domain=example.com; path=/1561; secure;
Set-Cookie: supersuper=secret; domain=example.com; path=/1561/login/; secure;
Set-Cookie: __Secure-SID=12345; Domain=example.com
Set-Cookie: __Secure-SID=12346; Secure; Domain=example.com
Set-Cookie: supersupersuper=secret; __Secure-SID=12346; Secure; Domain=example.com
Set-Cookie: __Host-SID=22345
Set-Cookie: __Host-SID=22346; Secure
Set-Cookie: __Host-SID=22347; Domain=example.com
Set-Cookie: __Host-SID=22348; Domain=example.com; Path=/
Set-Cookie: __Host-SID=22349; Secure; Domain=example.com; Path=/
Set-Cookie: __Host-SID=12346; Secure; Path=/
Content-Length: 7

nomnom
</data1>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: super=secret; domain=example.com; path=/1561; httponly;
Set-Cookie: super=secret; domain=example.com; path=/1561/; httponly;
Set-Cookie: super=secret; domain=example.com; path=/15; httponly;
Set-Cookie: public=yes; domain=example.com; path=/foo;
Set-Cookie: supersuper=secret; domain=example.com; path=/1561/login/en;
Set-Cookie: supersuper=secret; domain=example.com; path=/1561/login;
Set-Cookie: secureoverhttp=yes; domain=example.com; path=/1561; secure;
Set-Cookie: __Secure-SID=22345; Domain=example.com
Set-Cookie: __Secure-SID=22346; Secure; Domain=example.com
Set-Cookie: __Host-SID=32345
Set-Cookie: __Host-SID=32346; Secure
Set-Cookie: __Host-SID=32347; Domain=example.com
Set-Cookie: __Host-SID=32348; Domain=example.com; Path=/
Set-Cookie: __Host-SID=32349; Secure; Domain=example.com; Path=/







|

|
|















|

|
|


|
|
|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: super=secret; domain=example.com; path=/%TESTNUMBER; secure;
Set-Cookie: supersuper=secret; domain=example.com; path=/%TESTNUMBER/login/; secure;
Set-Cookie: __Secure-SID=12345; Domain=example.com
Set-Cookie: __Secure-SID=12346; Secure; Domain=example.com
Set-Cookie: supersupersuper=secret; __Secure-SID=12346; Secure; Domain=example.com
Set-Cookie: __Host-SID=22345
Set-Cookie: __Host-SID=22346; Secure
Set-Cookie: __Host-SID=22347; Domain=example.com
Set-Cookie: __Host-SID=22348; Domain=example.com; Path=/
Set-Cookie: __Host-SID=22349; Secure; Domain=example.com; Path=/
Set-Cookie: __Host-SID=12346; Secure; Path=/
Content-Length: 7

nomnom
</data1>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: super=secret; domain=example.com; path=/%TESTNUMBER; httponly;
Set-Cookie: super=secret; domain=example.com; path=/%TESTNUMBER/; httponly;
Set-Cookie: super=secret; domain=example.com; path=/15; httponly;
Set-Cookie: public=yes; domain=example.com; path=/foo;
Set-Cookie: supersuper=secret; domain=example.com; path=/%TESTNUMBER/login/en;
Set-Cookie: supersuper=secret; domain=example.com; path=/%TESTNUMBER/login;
Set-Cookie: secureoverhttp=yes; domain=example.com; path=/%TESTNUMBER; secure;
Set-Cookie: __Secure-SID=22345; Domain=example.com
Set-Cookie: __Secure-SID=22346; Secure; Domain=example.com
Set-Cookie: __Host-SID=32345
Set-Cookie: __Host-SID=32346; Secure
Set-Cookie: __Host-SID=32347; Domain=example.com
Set-Cookie: __Host-SID=32348; Domain=example.com; Path=/
Set-Cookie: __Host-SID=32349; Secure; Domain=example.com; Path=/
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
http
https
</server>
<name>
Cookies set over HTTP can't override secure ones
</name>
<command>
-k https://%HOSTIP:%HTTPSPORT/15610001 -L -c log/jar1561.txt -H "Host: www.example.com"  http://%HOSTIP:%HTTPPORT/15610002 -L -c log/jar1561.txt -H "Host: www.example.com"
</command>
</client>
<verify>
<protocol>
GET /15610001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /15610002 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar1561.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.example.com	TRUE	/foo	FALSE	0	public	yes
www.example.com	FALSE	/	TRUE	0	__Host-SID	12346
.example.com	TRUE	/	TRUE	0	supersupersuper	secret
.example.com	TRUE	/	TRUE	0	__Secure-SID	12346
.example.com	TRUE	/1561/login/	TRUE	0	supersuper	secret
#HttpOnly_.example.com	TRUE	/15	FALSE	0	super	secret
</file>

</verify>

</testcase>







|




|




|





|








|






65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
http
https
</server>
<name>
Cookies set over HTTP can't override secure ones
</name>
<command>
-k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER0001 -L -c log/jar%TESTNUMBER.txt -H "Host: www.example.com"  http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002 -L -c log/jar%TESTNUMBER.txt -H "Host: www.example.com"
</command>
</client>
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.example.com	TRUE	/foo	FALSE	0	public	yes
www.example.com	FALSE	/	TRUE	0	__Host-SID	12346
.example.com	TRUE	/	TRUE	0	supersupersuper	secret
.example.com	TRUE	/	TRUE	0	__Secure-SID	12346
.example.com	TRUE	/%TESTNUMBER/login/	TRUE	0	supersuper	secret
#HttpOnly_.example.com	TRUE	/15	FALSE	0	super	secret
</file>

</verify>

</testcase>
Changes to jni/curl/tests/data/test1562.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: foo=123; path=/; secure;
Content-Length: 7

nomnom
</data1>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: foo=; Expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
Content-Length: 7

nomnom
</data2>
</reply>







|








|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: foo=123; path=/; secure;
Content-Length: 7

nomnom
</data1>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: foo=; Expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
Content-Length: 7

nomnom
</data2>
</reply>
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
http
https
</server>
<name>
Expire secure cookies over HTTPS
</name>
<command>
-k https://%HOSTIP:%HTTPSPORT/15620001 -H "Host: www.example.com" https://%HOSTIP:%HTTPSPORT/15620002 -b "non-existing" https://%HOSTIP:%HTTPSPORT/15620001
</command>
</client>
<verify>
<protocol>
GET /15620001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /15620002 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: foo=123

GET /15620001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>

</testcase>







|




|




|





|









40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
http
https
</server>
<name>
Expire secure cookies over HTTPS
</name>
<command>
-k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER0001 -H "Host: www.example.com" https://%HOSTIP:%HTTPSPORT/%TESTNUMBER0002 -b "non-existing" https://%HOSTIP:%HTTPSPORT/%TESTNUMBER0001
</command>
</client>
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: foo=123

GET /%TESTNUMBER0001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>

</testcase>
Changes to jni/curl/tests/data/test1563.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
GOPHER
HTTP GET
followlocation
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7
Location: gopher://www.example.co.uk

nomnom
</data1>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Make sure redirects to CURLPROTO_GOPHER are forbidden by default
</name>
<command>
http://%HOSTIP:%HTTPPORT/15630001 -L -H "Host: www.example.com"
</command>
</client>
<verify>
<errorcode>
1
</errorcode>
<protocol>
GET /15630001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>

</testcase>













|

















|







|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
GOPHER
HTTP GET
followlocation
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7
Location: gopher://www.example.co.uk

nomnom
</data1>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
Make sure redirects to CURLPROTO_GOPHER are forbidden by default
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -L -H "Host: www.example.com"
</command>
</client>
<verify>
<errorcode>
1
</errorcode>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: www.example.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>

</testcase>
Changes to jni/curl/tests/data/test1564.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<features>
wakeup
</features>
<server>
none
</server>
<tool>
lib1564
</tool>
<name>
wakeup before poll with no easy handles
</name>
<command>
</command>
</client>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<features>
wakeup
</features>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
wakeup before poll with no easy handles
</name>
<command>
</command>
</client>
Changes to jni/curl/tests/data/test1565.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<features>
wakeup
</features>
<server>
http
</server>
<tool>
lib1565
</tool>
<name>
wakeup from another thread
</name>
<command>
http://%HOSTIP:%HTTPPORT/1
</command>







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<features>
wakeup
</features>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
wakeup from another thread
</name>
<command>
http://%HOSTIP:%HTTPPORT/1
</command>
Changes to jni/curl/tests/data/test1566.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 304 Not modified
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Connection: close
Content-Type: text/html

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
--etag-compare that gets a 304 back shouldn't overwrite the file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/1566 -o log/output1566 --etag-compare log/etag1566
</command>
<file name="log/etag1566">
"123456"
</file>
<file1 name="log/output1566">
downloaded already
</file1>

</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1566 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "123456"

</protocol>

# verify that the target file is untouched
<file name="log/output1566">
downloaded already
</file>
</verify>
</testcase>







|



















|

|


|









|








|




8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 304 Not modified
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Connection: close
Content-Type: text/html

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
--etag-compare that gets a 304 back shouldn't overwrite the file
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/output%TESTNUMBER --etag-compare log/etag%TESTNUMBER
</command>
<file name="log/etag%TESTNUMBER">
"123456"
</file>
<file1 name="log/output%TESTNUMBER">
downloaded already
</file1>

</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "123456"

</protocol>

# verify that the target file is untouched
<file name="log/output%TESTNUMBER">
downloaded already
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1567.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Content-Length: 6
Location: /15670002

-foo-
</data>
<data2>
HTTP/1.1 200 OK
Content-Length: 11








|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Content-Length: 6
Location: /%TESTNUMBER0002

-foo-
</data>
<data2>
HTTP/1.1 200 OK
Content-Length: 11

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52




53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib1567
</tool>

 <name>
re-run redirected transfer without setting CURLU URL again
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1567
</command>
</client>

<verify>
<protocol>
GET /1567 HTTP/1.1




Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /15670002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /1567 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /15670002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|






|





|
>
>
>
>



|



<
<
<
<
|






32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63




64
65
66
67
68
69
70
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
re-run redirected transfer without setting CURLU URL again
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*





GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1568.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
!SSPI
crypto
</features>
<name>
HTTP with Digest authorization on custom CURLOPT_PORT
</name>
<tool>
lib1568
</tool>
<command>
http://%HOSTIP/1568 %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1568 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: lib1568
Accept: */*

GET /1568 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1568", response="9cbbd857a37e45f2bcad5c7d088191df"
User-Agent: lib1568
Accept: */*

</protocol>
</verify>
</testcase>







|


|






|

|


|

|
|





57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
!SSPI
crypto
</features>
<name>
HTTP with Digest authorization on custom CURLOPT_PORT
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP/%TESTNUMBER %HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: lib%TESTNUMBER
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="9cbbd857a37e45f2bcad5c7d088191df"
User-Agent: lib%TESTNUMBER
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test1569.


















































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
FTP
PASV
RETR
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
data
    to
      see
that FTP
works
  so does it?
</data>
<servercmd>
REPLY EPSV 500 no such command
</servercmd>
</reply>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP first type=A then regular URL
 </name>
<tool>
lib%TESTNUMBER
</tool>
<command>
"ftp://%HOSTIP:%FTPPORT/%TESTNUMBER;type=A" ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE A
RETR %TESTNUMBER
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
<stdout>
data
    to
      see
that FTP
works
  so does it?
data
    to
      see
that FTP
works
  so does it?
</stdout>

</testcase>
Changes to jni/curl/tests/data/test157.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with --anyauth (when the server requires none)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/157 -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /157 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP GET with --anyauth (when the server requires none)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test1570.


















































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
FTP
PASV
RETR
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
data
    to
      see
that FTP
works
  so does it?
</data>
<servercmd>
REPLY EPSV 500 no such command
</servercmd>
</reply>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP first type=D then regular URL
 </name>
<tool>
lib1569
</tool>
<command>
"ftp://%HOSTIP:%FTPPORT/%TESTNUMBER;type=D" ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE A
NLST
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
<stdout>
data
    to
      see
that FTP
works
  so does it?
data
    to
      see
that FTP
works
  so does it?
</stdout>

</testcase>
Changes to jni/curl/tests/data/test158.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP multipart formpost with only a 100 reply
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/158 -F name=daniel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^Content-Type: multipart/form-data.*
^-----------------------.*
</strip>
<protocol>
POST /158 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 145
Content-Type: multipart/form-data; boundary=----------------------------4f12fcdaa3bc

------------------------------4f12fcdaa3bc







|










|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP multipart formpost with only a 100 reply
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -F name=daniel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^Content-Type: multipart/form-data.*
^-----------------------.*
</strip>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 145
Content-Type: multipart/form-data; boundary=----------------------------4f12fcdaa3bc

------------------------------4f12fcdaa3bc
Changes to jni/curl/tests/data/test159.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/159 -u testuser:testpass --ntlm -0
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /159 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|









|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -0
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test1590.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# tool is what to use instead of 'curl'
<tool>
lib1553
</tool>

# it is important this uses a host name that resolves successfully
<command>
imap://localhost:%IMAPPORT/1590
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# tool is what to use instead of 'curl'
<tool>
lib1553
</tool>

# it is important this uses a host name that resolves successfully
<command>
imap://localhost:%IMAPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
Changes to jni/curl/tests/data/test1591.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
</data>
</reply>
# Client-side
<client>
<features>
http
</features>
<server>
http
</server>
<name>
HTTP PUT with trailers at the end
</name>
<tool>
lib1591
</tool>
<command>
http://%HOSTIP:%HTTPPORT/bzz/1591
</command>
<stdin>
more than one byte
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /bzz/1591 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Trailer: my-super-awesome-trailer, my-other-awesome-trailer
Expect: 100-continue

e







|















|


|









|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
</data>
</reply>
# Client-side
<client>
<features>
http
</features>
<server>
http
</server>
<name>
HTTP PUT with trailers at the end
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP:%HTTPPORT/bzz/%TESTNUMBER
</command>
<stdin>
more than one byte
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /bzz/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Trailer: my-super-awesome-trailer, my-other-awesome-trailer
Expect: 100-continue

e
Changes to jni/curl/tests/data/test1592.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# Client-side
<client>
<server>
none
</server>
<tool>
lib1592
</tool>
 <name>
HTTP request, remove handle while resolving, don't block
 </name>

 <command>
http://a-site-never-accessed.example.org/1592
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<valgrind>
disable







|






|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# Client-side
<client>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP request, remove handle while resolving, don't block
 </name>

 <command>
http://a-site-never-accessed.example.org/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<valgrind>
disable
Changes to jni/curl/tests/data/test1593.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
<name>
HTTP custom header overrides CURLOPT_TIMECONDITION
</name>
<tool>
lib1593
</tool>
<command>
http://%HOSTIP:%HTTPPORT/1593
</command>
</client>

<verify>
# Note here the lack of If-Modified-Since
<protocol>
GET /1593 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|


|






|






23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
<name>
HTTP custom header overrides CURLOPT_TIMECONDITION
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
# Note here the lack of If-Modified-Since
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1594.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
<name>
HTTP Retry-After header parsing and extraction
</name>
<tool>
lib1594
</tool>
<command>
http://%HOSTIP:%HTTPPORT/1594
</command>
</client>

<verify>
<protocol>
GET /1594 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 22
</stdout>







|


|





|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
<name>
HTTP Retry-After header parsing and extraction
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 22
</stdout>
Changes to jni/curl/tests/data/test1595.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<name>
HTTP Retry-After header extraction (without header)
</name>
<tool>
lib1594
</tool>
<command>
http://%HOSTIP:%HTTPPORT/1595
</command>
</client>

<verify>
<protocol>
GET /1595 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 0
</stdout>







|





|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<name>
HTTP Retry-After header extraction (without header)
</name>
<tool>
lib1594
</tool>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 0
</stdout>
Changes to jni/curl/tests/data/test1596.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
<name>
HTTP Retry-After header parsing using a date
</name>
<tool>
lib1596
</tool>
<command>
http://%HOSTIP:%HTTPPORT/1596
</command>
</client>

<verify>
<protocol>
GET /1596 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 172066
</stdout>







|


|





|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
<name>
HTTP Retry-After header parsing using a date
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 172066
</stdout>
Changes to jni/curl/tests/data/test16.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy authorization
 </name>
 <command>
 -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x %HOSTIP:%HTTPPORT http://we.want.that.site.com/16
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/16 HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZUB1c2VyOmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|


















|









|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy authorization
 </name>
 <command>
 -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x %HOSTIP:%HTTPPORT http://we.want.that.site.com/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/%TESTNUMBER HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZUB1c2VyOmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test160.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

surprise
</data>
<data1>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</data1>

<postcmd>
wait 1
</postcmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with delayed close, conn reuse, connection reset and retry
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/160 http://%HOSTIP:%HTTPPORT/wantmore/1600001
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

surprise
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</stdout>

<protocol>
GET /want/160 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /wantmore/1600001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|






|



















|







|




|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

surprise
</data>
<data1>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</data1>

<postcmd>
wait 1
</postcmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with delayed close, conn reuse, connection reset and retry
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER http://%HOSTIP:%HTTPPORT/wantmore/%TESTNUMBER0001
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9

surprise
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

surprise2
</stdout>

<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /wantmore/%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test161.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP RETR PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/161
</command>
</client>


# Verify data after the test has been "shot"
<verify>
# This doesn't send QUIT because of known bug:
# "7.8 Premature transfer end but healthy control channel"
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 161
RETR 161
</protocol>
# CURLE_PARTIAL_FILE = 18
<errorcode>
18
</errorcode>
</verify>
</testcase>







|














|
|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP RETR PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>


# Verify data after the test has been "shot"
<verify>
# This doesn't send QUIT because of known bug:
# "7.8 Premature transfer end but healthy control channel"
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
</protocol>
# CURLE_PARTIAL_FILE = 18
<errorcode>
18
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1613.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<name>
Send "OPTIONS *" with --request-target to a proxy
</name>
<features>
proxy
</features>
<command>
--request-target '*' -X OPTIONS --proxy http://%HOSTIP:%HTTPPORT/ -H "Testno: 1613" http://www.example.org/
</command>
</client>

<verify>
<protocol>
OPTIONS * HTTP/1.1
Host: www.example.org
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Testno: 1613

</protocol>
</verify>
</testcase>







|










|




31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<name>
Send "OPTIONS *" with --request-target to a proxy
</name>
<features>
proxy
</features>
<command>
--request-target '*' -X OPTIONS --proxy http://%HOSTIP:%HTTPPORT/ -H "Testno: %TESTNUMBER" http://www.example.org/
</command>
</client>

<verify>
<protocol>
OPTIONS * HTTP/1.1
Host: www.example.org
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Testno: %TESTNUMBER

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test162.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET asking for --proxy-ntlm when some other authentication is required
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/162 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm --fail
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/162 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>







|






|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET asking for --proxy-ntlm when some other authentication is required
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm --fail
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
Changes to jni/curl/tests/data/test163.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP multipart formpost with contents from a file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/163 -F "name=<log/field163" -F tool=curl
</command>
# We create this file before the command is invoked!
<file name="log/field163">
contents
from
a
file

newlinens?
yes please
        
[tab][CR] too
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/163 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 304
Content-Type: multipart/form-data; boundary=----------------------------c2d1767eb6ac

------------------------------c2d1767eb6ac












|
















|


|


















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP multipart formpost with contents from a file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F "name=<log/field%TESTNUMBER" -F tool=curl
</command>
# We create this file before the command is invoked!
<file name="log/field%TESTNUMBER">
contents
from
a
file

newlinens?
yes please
        
[tab][CR] too
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 304
Content-Type: multipart/form-data; boundary=----------------------------c2d1767eb6ac

------------------------------c2d1767eb6ac
Changes to jni/curl/tests/data/test1630.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>
</reply>

# Client-side
<client>
<server>
http
https-proxy
</server>
 <name>
HTTPS-proxy with Basic auth to HTTP without auth
 </name>
 <command>
 -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x https://%HOSTIP:%HTTPSPROXYPORT http://we.want.that.site.com/1630 --proxy-insecure
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
GET http://we.want.that.site.com/1630 HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZUB1c2VyOmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>







|



















|









|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 22

the content goes here
</data>
</reply>

# Client-side
<client>
<server>
http
https-proxy
</server>
 <name>
HTTPS-proxy with Basic auth to HTTP without auth
 </name>
 <command>
 -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x https://%HOSTIP:%HTTPSPROXYPORT http://we.want.that.site.com/%TESTNUMBER --proxy-insecure
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
GET http://we.want.that.site.com/%TESTNUMBER HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZUB1c2VyOmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</proxy>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1631.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Server-side
<reply>

# This is the HTTPS proxy response
<connect>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 0

</connect>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Server-side
<reply>

# This is the HTTPS proxy response
<connect>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 0

</connect>

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
ftp
https-proxy
</server>
 <name>
FTP through HTTPS-proxy
 </name>
 <command>
-p -x https://%HOSTIP:%HTTPSPROXYPORT ftp://ftp.site.thru.https.proxy:%FTPPORT/1631 --proxy-insecure
</command>
<features>
http
proxy
</features>
</client>








|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
ftp
https-proxy
</server>
 <name>
FTP through HTTPS-proxy
 </name>
 <command>
-p -x https://%HOSTIP:%HTTPSPROXYPORT ftp://ftp.site.thru.https.proxy:%FTPPORT/%TESTNUMBER --proxy-insecure
</command>
<features>
http
proxy
</features>
</client>

74
75
76
77
78
79
80
81
82
83
84
85
86
</proxy>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 1631
RETR 1631
QUIT
</protocol>
</verify>
</testcase>







|
|




74
75
76
77
78
79
80
81
82
83
84
85
86
</proxy>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1632.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# Server-side
<reply>

# This is the HTTPS proxy response
<connect>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 0

</connect>

# This is the FTP server response. The Life and Adventures of Robinson Crusoe
<data>
I was born in the year 1632, in the city of York, of a good family, though not
of that country, myfather being a foreigner of Bremen, who settled first at
Hull.  He got a good estate by merchandise,and leaving off his trade, lived
afterwards at York, from whence he had married my mother, whoserelations were
named Robinson, a very good family in that country, and from whom I was
calledRobinson Kreutznaer; but, by the usual corruption of words in England,
we are now called—nay wecall ourselves and write our name—Crusoe; and so my
companions always called me.







|









|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# Server-side
<reply>

# This is the HTTPS proxy response
<connect>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 0

</connect>

# This is the FTP server response. The Life and Adventures of Robinson Crusoe
<data>
I was born in the year %TESTNUMBER, in the city of York, of a good family, though not
of that country, myfather being a foreigner of Bremen, who settled first at
Hull.  He got a good estate by merchandise,and leaving off his trade, lived
afterwards at York, from whence he had married my mother, whoserelations were
named Robinson, a very good family in that country, and from whom I was
calledRobinson Kreutznaer; but, by the usual corruption of words in England,
we are now called—nay wecall ourselves and write our name—Crusoe; and so my
companions always called me.
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
ftp
https-proxy
</server>
 <name>
FTP through HTTPS-proxy, with connection re-use
 </name>
 <command>
-p -x https://%HOSTIP:%HTTPSPROXYPORT ftp://ftp.site.thru.https.proxy:%FTPPORT/1632 --proxy-insecure ftp://ftp.site.thru.https.proxy:%FTPPORT/16320002
</command>
<features>
http
proxy
</features>
</client>








|







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
ftp
https-proxy
</server>
 <name>
FTP through HTTPS-proxy, with connection re-use
 </name>
 <command>
-p -x https://%HOSTIP:%HTTPSPROXYPORT ftp://ftp.site.thru.https.proxy:%FTPPORT/%TESTNUMBER --proxy-insecure ftp://ftp.site.thru.https.proxy:%FTPPORT/%TESTNUMBER0002
</command>
<features>
http
proxy
</features>
</client>

89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
</proxy>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 1632
RETR 1632
EPSV
SIZE 16320002
RETR 16320002
QUIT
</protocol>
</verify>
</testcase>







|
|

|
|




89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
</proxy>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER0002
RETR %TESTNUMBER0002
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1633.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Server-side
<reply>
<data>
HTTP/1.1 301 OK
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Location: /16330002

</data>
<data2>
HTTP/1.1 429 too many requests
Retry-After: 1
Content-Length: 0
Connection: close

</data2>

<datacheck>
HTTP/1.1 301 OK
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Location: /16330002

HTTP/1.1 429 too many requests
Retry-After: 1
Content-Length: 0
Connection: close

HTTP/1.1 301 OK
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Location: /16330002

HTTP/1.1 429 too many requests
Retry-After: 1
Content-Length: 0
Connection: close

</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
--retry with a 429 response and Retry-After:
</name>
<command>
http://%HOSTIP:%HTTPPORT/1633 -d moo --retry 1 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /1633 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooGET /16330002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

POST /1633 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooGET /16330002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|















|










|



















|







|






|




|






|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Server-side
<reply>
<data>
HTTP/1.1 301 OK
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Location: /%TESTNUMBER0002

</data>
<data2>
HTTP/1.1 429 too many requests
Retry-After: 1
Content-Length: 0
Connection: close

</data2>

<datacheck>
HTTP/1.1 301 OK
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Location: /%TESTNUMBER0002

HTTP/1.1 429 too many requests
Retry-After: 1
Content-Length: 0
Connection: close

HTTP/1.1 301 OK
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Location: /%TESTNUMBER0002

HTTP/1.1 429 too many requests
Retry-After: 1
Content-Length: 0
Connection: close

</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
--retry with a 429 response and Retry-After:
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -d moo --retry 1 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooGET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

mooGET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1634.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<server>
http
</server>
<name>
--retry with a 429 response and Retry-After: and --fail
</name>
<command>
http://%HOSTIP:%HTTPPORT/1634 --retry 1  --fail
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1634 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1634 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|




|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<server>
http
</server>
<name>
--retry with a 429 response and Retry-After: and --fail
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --retry 1  --fail
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test164.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP range with multiple ranges
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/164 -r 0-10,12-15
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/164 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=0-10,12-15
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|






|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP range with multiple ranges
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -r 0-10,12-15
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=0-10,12-15
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test165.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>








|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
HTTP over proxy with IDN host name
 </name>
 <command>
http://www.åäö.se/page/165 -x %HOSTIP:%HTTPPORT http://www.große.de/page/165
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://www.xn--4cab6c.se/page/165 HTTP/1.1
Host: www.xn--4cab6c.se
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://www.xn--groe-xna.de/page/165 HTTP/1.1
Host: www.xn--groe-xna.de
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|







|





|








38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
HTTP over proxy with IDN host name
 </name>
 <command>
http://www.åäö.se/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT http://www.große.de/page/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://www.xn--4cab6c.se/page/%TESTNUMBER HTTP/1.1
Host: www.xn--4cab6c.se
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://www.xn--groe-xna.de/page/%TESTNUMBER HTTP/1.1
Host: www.xn--groe-xna.de
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1654.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<setenv>
CURL_TIME=1548369261
</setenv>
<name>
alt-svc
</name>
<command>
log/1654
</command>
<file name="log/1654" mode="text">
h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
# a comment
h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
  h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
	h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
    # also a comment
bad example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
rubbish
</file>
</client>
<verify>
<file name="log/1654-out" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0







|

|











|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<setenv>
CURL_TIME=1548369261
</setenv>
<name>
alt-svc
</name>
<command>
log/%TESTNUMBER
</command>
<file name="log/%TESTNUMBER" mode="text">
h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
# a comment
h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
  h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
	h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
    # also a comment
bad example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
rubbish
</file>
</client>
<verify>
<file name="log/%TESTNUMBER-out" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
Changes to jni/curl/tests/data/test166.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP formpost a file with spaces in name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/166 -F "name=@log/fie ld 166"
</command>
# We create this file before the command is invoked!
<file name="log/fie ld 166">
data inside the file
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/166 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 223
Content-Type: multipart/form-data; boundary=----------------------------b0b3d6d23991

------------------------------b0b3d6d23991
Content-Disposition: form-data; name="name"; filename="fie ld 166"
Content-Type: application/octet-stream

data inside the file

------------------------------b0b3d6d23991--
</protocol>
</verify>
</testcase>












|
















|


|










|







|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP formpost a file with spaces in name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F "name=@log/fie ld %TESTNUMBER"
</command>
# We create this file before the command is invoked!
<file name="log/fie ld %TESTNUMBER">
data inside the file
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 223
Content-Type: multipart/form-data; boundary=----------------------------b0b3d6d23991

------------------------------b0b3d6d23991
Content-Disposition: form-data; name="name"; filename="fie ld %TESTNUMBER"
Content-Type: application/octet-stream

data inside the file

------------------------------b0b3d6d23991--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1660.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
none
</server>
<features>
unittest
HSTS
</features>

<file name="log/input1660">
# Your HSTS cache. https://curl.se/docs/hsts.html
# This file was generated by libcurl! Edit at your own risk.
.readfrom.example "20211001 04:47:41"
.old.example "20161001 04:47:41"
</file>

# This date is exactly "20190124 22:34:21" UTC







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
none
</server>
<features>
unittest
HSTS
</features>

<file name="log/input%TESTNUMBER">
# Your HSTS cache. https://curl.se/docs/hsts.html
# This file was generated by libcurl! Edit at your own risk.
.readfrom.example "20211001 04:47:41"
.old.example "20161001 04:47:41"
</file>

# This date is exactly "20190124 22:34:21" UTC
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
expire.example [expire.example]: 1548369268
expire.example [expire.example]: 1548369268
expire.example [expire.example]: 1548369268
'expire.example' is not HSTS
'expire.example' is not HSTS
'expire.example' is not HSTS
</stdout>
<file name="log/hsts1660">
# Your HSTS cache. https://curl.se/docs/hsts.html
# This file was generated by libcurl! Edit at your own risk.
.example.com "20191001 04:47:41"
example.org "20200124 22:34:21"
</file>
</verify>
</testcase>







|







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
expire.example [expire.example]: 1548369268
expire.example [expire.example]: 1548369268
expire.example [expire.example]: 1548369268
'expire.example' is not HSTS
'expire.example' is not HSTS
'expire.example' is not HSTS
</stdout>
<file name="log/hsts%TESTNUMBER">
# Your HSTS cache. https://curl.se/docs/hsts.html
# This file was generated by libcurl! Edit at your own risk.
.example.com "20191001 04:47:41"
example.org "20200124 22:34:21"
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test167.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
crypto
proxy
</features>
 <name>
HTTP with proxy-requiring-Basic to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --digest --user digest:alot
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Basic Zm9vOmJhcg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Basic Zm9vOmJhcg==
Authorization: Digest username="digest", realm="weirdorealm", nonce="12345", uri="/167", response="13c7c02a252cbe1c46d8669898a3be26"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|






|






|


|







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
crypto
proxy
</features>
 <name>
HTTP with proxy-requiring-Basic to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --digest --user digest:alot
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Basic Zm9vOmJhcg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Basic Zm9vOmJhcg==
Authorization: Digest username="digest", realm="weirdorealm", nonce="12345", uri="/%TESTNUMBER", response="13c7c02a252cbe1c46d8669898a3be26"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test168.
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
crypto
proxy
</features>
 <name>
HTTP with proxy-requiring-Digest to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-digest --digest --user digest:alot
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976"
Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/168", response="ca87f2d768a231e2d637a55698d5c416"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|






|





|

|




|

|
|







61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
crypto
proxy
</features>
 <name>
HTTP with proxy-requiring-Digest to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-digest --digest --user digest:alot
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/%TESTNUMBER", response="fb8608e00ad9239a3dedb14bc8575976"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/%TESTNUMBER", response="fb8608e00ad9239a3dedb14bc8575976"
Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/%TESTNUMBER", response="ca87f2d768a231e2d637a55698d5c416"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test169.
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Authorization: Digest username="digest", realm="r e a l m", nonce="abcdef", uri="/169", response="95d48591985a03c4b49cb962aa7bd3e6"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|









|






|






|

|







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Authorization: Digest username="digest", realm="r e a l m", nonce="abcdef", uri="/%TESTNUMBER", response="95d48591985a03c4b49cb962aa7bd3e6"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test17.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Set the user-agent using a short-option:
-A "agent007 license to drill\t"
#
# long option *with* '--':
--max-time 180
 </stdin>
 <command>
-K - %HOSTIP:%HTTPPORT/that.site.com/17
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
MOOO /that.site.com/17 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: agent007 license to drill	
Accept: */*

</protocol>
</verify>
</testcase>







|






|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Set the user-agent using a short-option:
-A "agent007 license to drill\t"
#
# long option *with* '--':
--max-time 180
 </stdin>
 <command>
-K - %HOSTIP:%HTTPPORT/that.site.com/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
MOOO /that.site.com/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: agent007 license to drill	
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test170.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
!SSPI
proxy
</features>
 <name>
HTTP POST with --proxy-ntlm and no SSL with no response
 </name>
 <command>
http://a.galaxy.far.far.away/170 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -F "dummy=value"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://a.galaxy.far.far.away/170 HTTP/1.1
Host: a.galaxy.far.far.away
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0








|






|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
!SSPI
proxy
</features>
 <name>
HTTP POST with --proxy-ntlm and no SSL with no response
 </name>
 <command>
http://a.galaxy.far.far.away/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -F "dummy=value"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://a.galaxy.far.far.away/%TESTNUMBER HTTP/1.1
Host: a.galaxy.far.far.away
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

Changes to jni/curl/tests/data/test1700.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-maa-
</data1>
</reply>

#
# Client-side
<client>
<server>
http
http/2
</server>
 <name>
HTTP/2 GET with Upgrade:
 </name>
 <command>
http://%HOSTIP:%HTTP2PORT/1700 --http2 http://%HOSTIP:%HTTP2PORT/17000001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^X-Forwarded-Proto:.*
^Via:.*
</strip>
<protocol>
GET /1700 HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*

GET /17000001 HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
last-modified: Tue, 13 Jun 2000 12:10:00 GMT
etag: "21025-dc7-39462498"
accept-ranges: bytes
content-length: 6
content-type: text/html
funny-head: yesyes
via: 1.1 nghttpx

-foo-
HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
via: 1.1 nghttpx

-maa-
</stdout>
<stripfile>
s/^server: nghttpx.*\r?\n//
</stripfile>
</verify>
</testcase>







|













|



















|











|




|











|










|











8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-maa-
</data1>
</reply>

#
# Client-side
<client>
<server>
http
http/2
</server>
 <name>
HTTP/2 GET with Upgrade:
 </name>
 <command>
http://%HOSTIP:%HTTP2PORT/%TESTNUMBER --http2 http://%HOSTIP:%HTTP2PORT/%TESTNUMBER0001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^X-Forwarded-Proto:.*
^Via:.*
</strip>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
last-modified: Tue, 13 Jun 2000 12:10:00 GMT
etag: "21025-dc7-39462498"
accept-ranges: bytes
content-length: 6
content-type: text/html
funny-head: yesyes
via: 1.1 nghttpx

-foo-
HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
via: 1.1 nghttpx

-maa-
</stdout>
<stripfile>
s/^server: nghttpx.*\r?\n//
</stripfile>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1701.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
http
http/2
</server>
 <name>
HTTP/2 POST with Upgrade:
 </name>
 <command>
http://%HOSTIP:%HTTP2PORT/1701 --http2 -d "datatosend"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^X-Forwarded-Proto:.*
^Via:.*
</strip>
<protocol nonewline="yes">
POST /1701 HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

datatosend
</protocol>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
last-modified: Tue, 13 Jun 2000 12:10:00 GMT
etag: "21025-dc7-39462498"
accept-ranges: bytes
content-length: 6
content-type: text/html
funny-head: yesyes
via: 1.1 nghttpx







|











|














|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
http
http/2
</server>
 <name>
HTTP/2 POST with Upgrade:
 </name>
 <command>
http://%HOSTIP:%HTTP2PORT/%TESTNUMBER --http2 -d "datatosend"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^X-Forwarded-Proto:.*
^Via:.*
</strip>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

datatosend
</protocol>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
last-modified: Tue, 13 Jun 2000 12:10:00 GMT
etag: "21025-dc7-39462498"
accept-ranges: bytes
content-length: 6
content-type: text/html
funny-head: yesyes
via: 1.1 nghttpx
Changes to jni/curl/tests/data/test1702.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
http
http/2
</server>
 <name>
HTTP/2 HEAD with Upgrade:
 </name>
 <command>
http://%HOSTIP:%HTTP2PORT/1702 --http2 --head
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^X-Forwarded-Proto:.*
^Via:.*
</strip>
<protocol>
HEAD /1702 HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
last-modified: Tue, 13 Jun 2000 12:10:00 GMT
etag: "21025-dc7-39462498"
accept-ranges: bytes
content-length: 6
content-type: text/html
funny-head: yesyes
via: 1.1 nghttpx







|











|











|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
http
http/2
</server>
 <name>
HTTP/2 HEAD with Upgrade:
 </name>
 <command>
http://%HOSTIP:%HTTP2PORT/%TESTNUMBER --http2 --head
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^X-Forwarded-Proto:.*
^Via:.*
</strip>
<protocol>
HEAD /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTP2PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
last-modified: Tue, 13 Jun 2000 12:10:00 GMT
etag: "21025-dc7-39462498"
accept-ranges: bytes
content-length: 6
content-type: text/html
funny-head: yesyes
via: 1.1 nghttpx
Added jni/curl/tests/data/test1703.


























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<testcase>
<info>
<keywords>
FILE
</keywords>
</info>

<reply>
<data>
foo
   bar
bar
   foo
moo
</data>
</reply>

# Client-side
<client>
<server>
file
</server>
<features>
Unicode
win32
</features>
<name>
basic file:// file with UTF-8 characters
</name>
<command option="no-include">
file://localhost%FILE_PWD/log/%E3%83%86%E3%82%B9%E3%83%88%TESTNUMBER.txt
</command>
<file name="log/テスト%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>
Changes to jni/curl/tests/data/test171.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP, get cookie with dot prefixed full domain
 </name>
 <command>
-c log/jar171 -x %HOSTIP:%HTTPPORT http://z.x.com/171
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://z.x.com/171 HTTP/1.1
Host: z.x.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<file name="log/jar171" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.z.x.com	TRUE	/	FALSE	0	XToken	xt
</file>
</verify>







|









|






|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP, get cookie with dot prefixed full domain
 </name>
 <command>
-c log/jar%TESTNUMBER -x %HOSTIP:%HTTPPORT http://z.x.com/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://z.x.com/%TESTNUMBER HTTP/1.1
Host: z.x.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<file name="log/jar%TESTNUMBER" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.z.x.com	TRUE	/	FALSE	0	XToken	xt
</file>
</verify>
Changes to jni/curl/tests/data/test172.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP with cookies file and custom added cookie
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/172 -b log/jar172.txt -b "tool=curl; name=fool"
</command>
<file name="log/jar172.txt">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.%HOSTIP	TRUE	/silly/	FALSE	0	ismatch	this
.%HOSTIP	TRUE	/	FALSE	0	partmatch	present
%HOSTIP	FALSE	/we/want/	FALSE	2139150993	nodomain	value
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/172 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: nodomain=value; partmatch=present; tool=curl; name=fool

</protocol>
</verify>







|

|













|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP with cookies file and custom added cookie
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -b log/jar%TESTNUMBER.txt -b "tool=curl; name=fool"
</command>
<file name="log/jar%TESTNUMBER.txt">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.%HOSTIP	TRUE	/silly/	FALSE	0	ismatch	this
.%HOSTIP	TRUE	/	FALSE	0	partmatch	present
%HOSTIP	FALSE	/we/want/	FALSE	2139150993	nodomain	value
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: nodomain=value; partmatch=present; tool=curl; name=fool

</protocol>
</verify>
Changes to jni/curl/tests/data/test173.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-formpost a file from stdin with "faked" filename
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl"
</command>

<stdin>
line1
line2
line3
line4
line5
line6
line7
line8
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/173 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 360
Content-Type: multipart/form-data; boundary=----------------------------5dbea401cd8c

------------------------------5dbea401cd8c












|

















|




















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-formpost a file from stdin with "faked" filename
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl"
</command>

<stdin>
line1
line2
line3
line4
line5
line6
line7
line8
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 360
Content-Type: multipart/form-data; boundary=----------------------------5dbea401cd8c

------------------------------5dbea401cd8c
Changes to jni/curl/tests/data/test174.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
HTTP POST --anyauth to server not requiring any auth at all
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/174 -u testuser:testpass --anyauth -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /174 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk







|






|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
HTTP POST --anyauth to server not requiring any auth at all
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
Changes to jni/curl/tests/data/test175.
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<features>
crypto
</features>
 <name>
HTTP POST --digest to server not requiring any auth at all
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/175 -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /175 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /175 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk







|






|






|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<features>
crypto
</features>
 <name>
HTTP POST --digest to server not requiring any auth at all
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
Changes to jni/curl/tests/data/test176.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<server>
http
</server>
 <name>
HTTP POST --ntlm to server not requiring any auth at all
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/176 -u auser:apasswd --ntlm -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /176 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /176 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk







|






|







|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<server>
http
</server>
 <name>
HTTP POST --ntlm to server not requiring any auth at all
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --ntlm -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
Changes to jni/curl/tests/data/test177.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 *MOVED* swsclose swsbounce
Server: Microsoft-IIS/6.0
Location: /mooooo/177
Content-Type: text/html; charset=iso-8859-1

</data>
</reply>

# Client-side
<client>
# 
<server>
http
</server>
<features>
crypto
</features>
 <name>
HTTP POST --digest to server doing a 302-location response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/177 -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST /177 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

</protocol>
</verify>
</testcase>







|


















|






|









9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 *MOVED* swsclose swsbounce
Server: Microsoft-IIS/6.0
Location: /mooooo/%TESTNUMBER
Content-Type: text/html; charset=iso-8859-1

</data>
</reply>

# Client-side
<client>
# 
<server>
http
</server>
<features>
crypto
</features>
 <name>
HTTP POST --digest to server doing a 302-location response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test178.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: -6
Content-Type: text/html
Funny-head: yesyes

moooooooooooo
</data>
<datacheck>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP response with negative Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/178
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /178 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
8













|








|













|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: -6
Content-Type: text/html
Funny-head: yesyes

moooooooooooo
</data>
<datacheck>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP response with negative Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
8
Changes to jni/curl/tests/data/test179.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
http
</server>
 <name>
HTTP using proxy and cookies with path checks
 </name>
 <command>
http://supertrooper.fake/c/179 -b log/injar179 -x %HOSTIP:%HTTPPORT
</command>
<file name="log/injar179">
supertrooper.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
supertrooper.fake	FALSE	/b	FALSE	0		moo1	indeed
supertrooper.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://supertrooper.fake/c/179 HTTP/1.1
Host: supertrooper.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: moo2=indeed

</protocol>







|

|












|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
http
</server>
 <name>
HTTP using proxy and cookies with path checks
 </name>
 <command>
http://supertrooper.fake/c/%TESTNUMBER -b log/injar%TESTNUMBER -x %HOSTIP:%HTTPPORT
</command>
<file name="log/injar%TESTNUMBER">
supertrooper.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
supertrooper.fake	FALSE	/b	FALSE	0		moo1	indeed
supertrooper.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://supertrooper.fake/c/%TESTNUMBER HTTP/1.1
Host: supertrooper.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: moo2=indeed

</protocol>
Changes to jni/curl/tests/data/test18.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<server>
http
</server>
 <name>
multiple requests using {} in URL
 </name>
 <command>
"%HOSTIP:%HTTPPORT/{18,180002,180003}"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /18 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /180002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /180003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
--_curl_--%HOSTIP:%HTTPPORT/18
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

moo
--_curl_--%HOSTIP:%HTTPPORT/180002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

foo
--_curl_--%HOSTIP:%HTTPPORT/180003
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

hoo
</stdout>
</verify>







|






|




|




|






|





|





|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<server>
http
</server>
 <name>
multiple requests using {} in URL
 </name>
 <command>
"%HOSTIP:%HTTPPORT/{%TESTNUMBER,%TESTNUMBER0002,%TESTNUMBER0003}"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
--_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

moo
--_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

foo
--_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0003
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

hoo
</stdout>
</verify>
Changes to jni/curl/tests/data/test180.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP/1.0
</keywords>
</info>

<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 1.0 PUT
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/180 -T log/test180.txt --http1.0
</command>
<file name="log/test180.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/180 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file












|
















|

|















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP/1.0
</keywords>
</info>

<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 1.0 PUT
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -T log/test%TESTNUMBER.txt --http1.0
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/%TESTNUMBER HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file
Changes to jni/curl/tests/data/test1800.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP/2
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 Ignored!
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP/2
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 Ignored!
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<features>
http/2
</features>
 <name>
HTTP/2 upgrade refused
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1800 --http2
</command>

</client>

<verify>
<protocol>
GET /1800 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: Upgrade, HTTP2-Settings
Upgrade: %H2CVER
HTTP2-Settings: AAMAAABkAAQCAAAAAAIAAAAA

</protocol>
</verify>
</testcase>







|






|










29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<features>
http/2
</features>
 <name>
HTTP/2 upgrade refused
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --http2
</command>

</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: Upgrade, HTTP2-Settings
Upgrade: %H2CVER
HTTP2-Settings: AAMAAABkAAQCAAAAAAIAAAAA

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1801.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Server-side
<reply>
<data>
HTTP/1.1 101 Switching!

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Content-Length: 6
Content-Type: text/html

lies!
</data>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Server-side
<reply>
<data>
HTTP/1.1 101 Switching!

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Content-Length: 6
Content-Type: text/html

lies!
</data>
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<features>
http/2
</features>
 <name>
HTTP/2 upgrade with lying server
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1801 --http2
</command>

</client>

<verify>
<protocol>
GET /1801 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: Upgrade, HTTP2-Settings
Upgrade: %H2CVER
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA








|






|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<features>
http/2
</features>
 <name>
HTTP/2 upgrade with lying server
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --http2
</command>

</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Connection: Upgrade, HTTP2-Settings
Upgrade: %H2CVER
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA

Changes to jni/curl/tests/data/test181.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP POST
HTTP/1.0
</keywords>
</info>

<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 1.0 POST
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/181 --data-binary @log/test181.txt --http1.0
</command>
<file name="log/test181.txt">
Weird
     file
         to
   upload
for
   testing
the
   POST
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST /we/want/181 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 79
Content-Type: application/x-www-form-urlencoded

Weird












|
















|

|















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP POST
HTTP/1.0
</keywords>
</info>

<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP 1.0 POST
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER --data-binary @log/test%TESTNUMBER.txt --http1.0
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
   POST
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 79
Content-Type: application/x-www-form-urlencoded

Weird
Changes to jni/curl/tests/data/test182.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
ftp
</server>
<name>
FTP download an empty file
</name>
<command>
ftp://%HOSTIP:%FTPPORT/182
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 182
RETR 182
QUIT
</protocol>
</verify>
</testcase>







|











|
|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
ftp
</server>
<name>
FTP download an empty file
</name>
<command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test183.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET two URLs over a single proxy with persistent connection
 </name>
 <command>
http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://deathstar.another.galaxy/183 HTTP/1.1
Host: deathstar.another.galaxy
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://a.galaxy.far.far.away/183 HTTP/1.1
Host: a.galaxy.far.far.away
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

</verify>
</testcase>







|















|









|





|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET two URLs over a single proxy with persistent connection
 </name>
 <command>
http://deathstar.another.galaxy/%TESTNUMBER http://a.galaxy.far.far.away/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://deathstar.another.galaxy/%TESTNUMBER HTTP/1.1
Host: deathstar.another.galaxy
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://a.galaxy.far.far.away/%TESTNUMBER HTTP/1.1
Host: a.galaxy.far.far.away
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test184.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: http://yet.another.host/184

moo
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</data1>
<datacheck>
HTTP/1.1 301 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: http://yet.another.host/184

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP replace Host: when following Location: to new host
 </name>
 <command>
http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://deathstar.another.galaxy/184 HTTP/1.1
Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://yet.another.host/184 HTTP/1.1
Host: yet.another.host
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

</verify>
</testcase>







|

|





|






|

|


|















|









|





|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: http://yet.another.host/%TESTNUMBER

moo
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</data1>
<datacheck>
HTTP/1.1 301 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: http://yet.another.host/%TESTNUMBER

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP replace Host: when following Location: to new host
 </name>
 <command>
http://deathstar.another.galaxy/%TESTNUMBER -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://deathstar.another.galaxy/%TESTNUMBER HTTP/1.1
Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://yet.another.host/%TESTNUMBER HTTP/1.1
Host: yet.another.host
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test185.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: go/west/185

moo
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</data1>
<datacheck>
HTTP/1.1 301 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: go/west/185

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP replace Host: when following Location: on the same host
 </name>
 <command>
http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://deathstar.another.galaxy/185 HTTP/1.1
Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://deathstar.another.galaxy/go/west/185 HTTP/1.1
Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

</verify>
</testcase>







|

|





|






|

|


|















|









|





|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: go/west/%TESTNUMBER

moo
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</data1>
<datacheck>
HTTP/1.1 301 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4
Location: go/west/%TESTNUMBER

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 4

moo
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP replace Host: when following Location: on the same host
 </name>
 <command>
http://deathstar.another.galaxy/%TESTNUMBER -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://deathstar.another.galaxy/%TESTNUMBER HTTP/1.1
Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://deathstar.another.galaxy/go/west/%TESTNUMBER HTTP/1.1
Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test186.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with types on text fields
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/186 -F "name=daniel;type=moo/foo" -F "html= <body>hello</body>;type=text/html;charset=verymoo"
</command>
# We create this file before the command is invoked!
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/186 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 320
Content-Type: multipart/form-data; boundary=----------------------------212d9006ceb5

------------------------------212d9006ceb5












|

















|










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with types on text fields
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F "name=daniel;type=moo/foo" -F "html= <body>hello</body>;type=text/html;charset=verymoo"
</command>
# We create this file before the command is invoked!
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 320
Content-Type: multipart/form-data; boundary=----------------------------212d9006ceb5

------------------------------212d9006ceb5
Changes to jni/curl/tests/data/test187.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /root/1870002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /root/1870002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with bad host name separation and slash in parameters
 </name>
 <command>
http://%HOSTIP:%HTTPPORT?oh=what-weird=test/187 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?oh=what-weird=test/187 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /root/1870002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|

|







|








|

|



|

















|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /root/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: /root/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with bad host name separation and slash in parameters
 </name>
 <command>
http://%HOSTIP:%HTTPPORT?oh=what-weird=test/%TESTNUMBER -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?oh=what-weird=test/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /root/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test188.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Location: /188
Content-Length: 3

OK
</data>
<data1>
HTTP/1.1 200 OK 
Connection: close
Content-Length: 15
Content-Range: bytes 50-

Actual content
</data1>

<datacheck>
HTTP/1.1 301 OK swsbounce
Location: /188
Content-Length: 3

HTTP/1.1 200 OK 
Connection: close
Content-Length: 15
Content-Range: bytes 50-








|















|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Location: /%TESTNUMBER
Content-Length: 3

OK
</data>
<data1>
HTTP/1.1 200 OK 
Connection: close
Content-Length: 15
Content-Range: bytes 50-

Actual content
</data1>

<datacheck>
HTTP/1.1 301 OK swsbounce
Location: /%TESTNUMBER
Content-Length: 3

HTTP/1.1 200 OK 
Connection: close
Content-Length: 15
Content-Range: bytes 50-

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<server>
http
</server>
 <name>
HTTP GET with resume and redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/188 -C 50 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /188 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

GET /188 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|





|








47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<server>
http
</server>
 <name>
HTTP GET with resume and redirect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C 50 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test189.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Location: /189
Content-Length: 3

OK
</data>
<data1>
HTTP/1.1 200 OK 
Connection: close
Content-Length: 15

Actual content
</data1>

<datacheck>
HTTP/1.1 301 OK swsbounce
Location: /189
Content-Length: 3

HTTP/1.1 200 OK 
Connection: close
Content-Length: 15

</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET with resume and redirect (to a page that doesn't resume)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/189 -C 50 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /189 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

GET /189 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 33 is CURLE_RANGE_ERROR
<errorcode>
33
</errorcode>
</verify>
</testcase>












|














|



















|






|





|












1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsbounce
Location: /%TESTNUMBER
Content-Length: 3

OK
</data>
<data1>
HTTP/1.1 200 OK 
Connection: close
Content-Length: 15

Actual content
</data1>

<datacheck>
HTTP/1.1 301 OK swsbounce
Location: /%TESTNUMBER
Content-Length: 3

HTTP/1.1 200 OK 
Connection: close
Content-Length: 15

</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET with resume and redirect (to a page that doesn't resume)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C 50 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 33 is CURLE_RANGE_ERROR
<errorcode>
33
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test190.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<killserver>
ftp
</killserver>
 <name>
FTP download with strict timeout and slow CWD
 </name>
 <command timeout="1">
ftp://%HOSTIP:%FTPPORT/path/to/file/190 -m %FTPTIME2
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 28 is CURLE_OPERATION_TIMEDOUT
<errorcode>







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<killserver>
ftp
</killserver>
 <name>
FTP download with strict timeout and slow CWD
 </name>
 <command timeout="1">
ftp://%HOSTIP:%FTPPORT/path/to/file/%TESTNUMBER -m %FTPTIME2
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 28 is CURLE_OPERATION_TIMEDOUT
<errorcode>
Changes to jni/curl/tests/data/test1904.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 204 Sure go ahead

</connect>
<datacheck>
HTTP/1.1 204 Sure go ahead

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP CONNECT with 204 response
 </name>
 <command>
http://test.1904:%HTTPPORT/we/want/that/page/1904 -p --proxy %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.1904:%HTTPPORT HTTP/1.1
Host: test.1904:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/1904 HTTP/1.1
Host: test.1904:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|















|




















|










|
|





|
|






10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 204 Sure go ahead

</connect>
<datacheck>
HTTP/1.1 204 Sure go ahead

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP CONNECT with 204 response
 </name>
 <command>
http://test.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER -p --proxy %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1905.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
cookies
FLUSH
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name;
Set-Cookie: secondcookie=present;

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
CURLOPT_COOKIELIST set to "FLUSH" of a shared cookie object
 </name>
<tool>
lib1905
</tool>
<command>
http://%HOSTIP:%HTTPPORT/we/want/1905
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/1905 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<file name="log/cookies1905" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

%HOSTIP	FALSE	/we/want/	FALSE	0	secondcookie	present
%HOSTIP	FALSE	/we/want/	FALSE	0	foobar	name
</file>
</verify>
</testcase>













|


















|


|






|




|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
cookies
FLUSH
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name;
Set-Cookie: secondcookie=present;

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
CURLOPT_COOKIELIST set to "FLUSH" of a shared cookie object
 </name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<file name="log/cookies%TESTNUMBER" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

%HOSTIP	FALSE	/we/want/	FALSE	0	secondcookie	present
%HOSTIP	FALSE	/we/want/	FALSE	0	foobar	name
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1906.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
CURLOPT_CURLU
CURLOPT_PORT
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
CURLOPT_CURLU and CURLOPT_PORT
 </name>
<tool>
lib1906
</tool>

# The tool does two requesets, the first sets CURLOPT_PORT to 1
# the second resets the port again and expects that request to work.
<command>
http://%HOSTIP:%HTTPPORT/1906
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1906 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>












|
















|





|






|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
CURLOPT_CURLU
CURLOPT_PORT
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
CURLOPT_CURLU and CURLOPT_PORT
 </name>
<tool>
lib%TESTNUMBER
</tool>

# The tool does two requesets, the first sets CURLOPT_PORT to 1
# the second resets the port again and expects that request to work.
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1907.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
CURLINFO_EFFECTIVE_URL
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Content-Length: 0

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
CURLINFO_EFFECTIVE_URL with non-scheme URL
 </name>
<tool>
lib1907
</tool>

<command>
%HOSTIP:%HTTPPORT/hello/../1907
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1907 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Effective URL: http://%HOSTIP:%HTTPPORT/1907
</stdout>
</verify>
</testcase>











|

















|



|






|





|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
CURLINFO_EFFECTIVE_URL
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Content-Length: 0

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
CURLINFO_EFFECTIVE_URL with non-scheme URL
 </name>
<tool>
lib%TESTNUMBER
</tool>

<command>
%HOSTIP:%HTTPPORT/hello/../%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Effective URL: http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1908.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
CURLINFO_EFFECTIVE_URL
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Content-Length: 0
alt-svc: h2="3dbbdetxoyw4nsp6c3cc456oj2ays6s43ezxzsfxxri3h5xqd.example:443"; ma=315360000; persist=1

</data>











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
CURLINFO_EFFECTIVE_URL
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Content-Length: 0
alt-svc: h2="3dbbdetxoyw4nsp6c3cc456oj2ays6s43ezxzsfxxri3h5xqd.example:443"; ma=315360000; persist=1

</data>
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
alt-svc cache save after resetting the handle
</name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
<tool>
lib1908
</tool>

<command>
%HOSTIP:%HTTPPORT/1908
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1908 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /1908 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stripfile>
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-1908" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h1 127.0.0.1 %HTTPPORT h2 3dbbdetxoyw4nsp6c3cc456oj2ays6s43ezxzsfxxri3h5xqd.example 443 TIMESTAMP 1 0
</file>
</verify>
</testcase>







|



|






|



|









|






43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
alt-svc cache save after resetting the handle
</name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
<tool>
lib%TESTNUMBER
</tool>

<command>
%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stripfile>
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-%TESTNUMBER" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h1 127.0.0.1 %HTTPPORT h2 3dbbdetxoyw4nsp6c3cc456oj2ays6s43ezxzsfxxri3h5xqd.example 443 TIMESTAMP 1 0
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1909.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
 <name>
HTTP GET --retry-all-errors to overcome partial transfer
 </name>
 <command option="no-output,no-include">
--retry 1 --retry-all-errors -o log/outfile1909 http://%HOSTIP:%HTTPPORT/1909
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1909 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /1909 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile1909">
data
</file1>

</verify>
</testcase>







|







|




|






|





32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
 <name>
HTTP GET --retry-all-errors to overcome partial transfer
 </name>
 <command option="no-output,no-include">
--retry 1 --retry-all-errors -o log/outfile%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<file1 name="log/outfile%TESTNUMBER">
data
</file1>

</verify>
</testcase>
Changes to jni/curl/tests/data/test191.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
ftp
</server>
 <name>
FTP URL with ?-letters in username and password 
 </name>
 <command>
"ftp://use%3fr:pass%3fword@%HOSTIP:%FTPPORT/191"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER use?r
PASS pass?word
PWD
EPSV
TYPE I
SIZE 191
RETR 191
QUIT
</protocol>
</verify>
</testcase>







|











|
|




17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
ftp
</server>
 <name>
FTP URL with ?-letters in username and password 
 </name>
 <command>
"ftp://use%3fr:pass%3fword@%HOSTIP:%FTPPORT/%TESTNUMBER"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER use?r
PASS pass?word
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1910.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<testcase>
<info>
<keywords>
HTTP
HTTP Basic
CURLOPT_FOLLOWLOCATION
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /19100002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 4

hej
</data2>
</reply>

# Client-side
<client>
<server>
http
</server>

<name>
HTTP credentials with newline and redirect
</name>
<tool>
lib1910
</tool>

<command>
%HOSTIP:%HTTPPORT/1910
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /1910 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcgpuYW1lOnBhc3MKd29yZA==
Accept: */*

GET /19100002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcgpuYW1lOnBhc3MKd29yZA==
Accept: */*

</protocol>
</verify>
</testcase>













|



|




|


















|



|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<testcase>
<info>
<keywords>
HTTP
HTTP Basic
CURLOPT_FOLLOWLOCATION
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /%TESTNUMBER0002

</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 4

hej
</data2>
</reply>

# Client-side
<client>
<server>
http
</server>

<name>
HTTP credentials with newline and redirect
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcgpuYW1lOnBhc3MKd29yZA==
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcgpuYW1lOnBhc3MKd29yZA==
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1911.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
none
</server>
<name>
verify that curl_easy_setopt() rejects too long string inputs
</name>
<tool>
lib1911
</tool>

</client>

# Verify data after the test has been "shot"
<verify>
</verify>







|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
none
</server>
<name>
verify that curl_easy_setopt() rejects too long string inputs
</name>
<tool>
lib%TESTNUMBER
</tool>

</client>

# Verify data after the test has been "shot"
<verify>
</verify>
Changes to jni/curl/tests/data/test1912.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
none
</server>
<name>
Cross validate that gcc-typecheck macros match the option types.
</name>
<tool>
lib1912
</tool>

</client>

# Verify data after the test has been "shot"
<verify>
</verify>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
none
</server>
<name>
Cross validate that gcc-typecheck macros match the option types.
</name>
<tool>
lib%TESTNUMBER
</tool>

</client>

# Verify data after the test has been "shot"
<verify>
</verify>
Changes to jni/curl/tests/data/test1913.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</server>

# require debug so that alt-svc can work over plain old HTTP
<name>
FTP with NOBODY set, getting a missing file
</name>
<tool>
lib1913
</tool>

<command>
ftp://%HOSTIP:%FTPPORT/not-there/1913
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
78







|



|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</server>

# require debug so that alt-svc can work over plain old HTTP
<name>
FTP with NOBODY set, getting a missing file
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
ftp://%HOSTIP:%FTPPORT/not-there/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
78
Changes to jni/curl/tests/data/test1915.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</server>

# require debug so that alt-svc can work over plain old HTTP
<name>
HSTS read/write callbacks
</name>
<tool>
lib1915
</tool>

<command>
http://%HOSTIP:%NOLISTENPORT/not-there/1915
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# it fails because there's nothing on that port
<errorcode>







|



|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</server>

# require debug so that alt-svc can work over plain old HTTP
<name>
HSTS read/write callbacks
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
http://%HOSTIP:%NOLISTENPORT/not-there/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# it fails because there's nothing on that port
<errorcode>
Changes to jni/curl/tests/data/test1916.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
mqtt
</server>
<name>
MQTT PUBLISH with no POSTFIELDSIZE set
</name>
<tool>
lib1916
</tool>
<command option="binary-trace">
"mqtt://%HOSTIP:%MQTTPORT/ "
</command>
</client>

#







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
mqtt
</server>
<name>
MQTT PUBLISH with no POSTFIELDSIZE set
</name>
<tool>
lib%TESTNUMBER
</tool>
<command option="binary-trace">
"mqtt://%HOSTIP:%MQTTPORT/ "
</command>
</client>

#
Changes to jni/curl/tests/data/test1917.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
mqtt
</server>
<name>
MQTT PUBLISH with CURLOPT_POST set (no payload)
</name>
<tool>
lib1917
</tool>
<command option="binary-trace">
"mqtt://%HOSTIP:%MQTTPORT/ "
</command>
</client>

#







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
mqtt
</server>
<name>
MQTT PUBLISH with CURLOPT_POST set (no payload)
</name>
<tool>
lib%TESTNUMBER
</tool>
<command option="binary-trace">
"mqtt://%HOSTIP:%MQTTPORT/ "
</command>
</client>

#
Changes to jni/curl/tests/data/test1918.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
none
</server>
<name>
curl_easy_option_by_name() and curl_easy_option_by_id()
</name>
<tool>
lib1918
</tool>

</client>

# Verify data after the test has been "shot"
<verify>
<stdout>







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
none
</server>
<name>
curl_easy_option_by_name() and curl_easy_option_by_id()
</name>
<tool>
lib%TESTNUMBER
</tool>

</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
Changes to jni/curl/tests/data/test192.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET -w num_connects with one simple connect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/192 -w "%{num_connects}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /192 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
1
</stdout>
</verify>
</testcase>













|

















|







|








|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET -w num_connects with one simple connect
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
1
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test193.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Location: ./193

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET -w num_connects with redirected fetch (2 connects)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/193 -w "%{num_connects}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /193 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /193 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Location: ./193

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
2
</stdout>

</verify>
</testcase>







|


|





|


















|







|




|








|


|


|









9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Location: ./%TESTNUMBER

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET -w num_connects with redirected fetch (2 connects)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close
Location: ./%TESTNUMBER

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 8
Connection: close

monster
2
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test1933.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<testcase>
<info>
<keywords>
HTTP
CURLOPT_AWS_SIGV4
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /19330002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0

</data>
</reply>













|



|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<testcase>
<info>
<keywords>
HTTP
CURLOPT_AWS_SIGV4
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /%TESTNUMBER0002

</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0

</data>
</reply>

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with one provider and auth cred via URL
</name>
<tool>
lib1933
</tool>

<command>
http://xxx:yyy@%HOSTIP:%HTTPPORT/1933/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /1933/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-xxx-date, Signature=d2c2dff48c59ec49dc31ef94f18c5dc1ac3eae2a70d51633a4342dadc0683664
X-Xxx-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>







|



|











|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with one provider and auth cred via URL
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
http://xxx:yyy@%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-xxx-date, Signature=d2c2dff48c59ec49dc31ef94f18c5dc1ac3eae2a70d51633a4342dadc0683664
X-Xxx-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1934.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /19340002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /%TESTNUMBER0002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with two providers
</name>
<tool>
lib1934
</tool>

<command>
http://%HOSTIP:%HTTPPORT/1934/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /1934/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=938937ca7da6bb3dbf15e30928265ec6f061532d035d2afda92fa7cb10feb196
X-Yyy-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>







|



|











|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with two providers
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=938937ca7da6bb3dbf15e30928265ec6f061532d035d2afda92fa7cb10feb196
X-Yyy-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1935.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /19350002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /%TESTNUMBER0002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with two providers and region
</name>
<tool>
lib1935
</tool>

<command>
http://%HOSTIP:%HTTPPORT/1935/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /1935/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=240750deb9263d4c8ece71c016f3919b56e518249390ef075740f94ef8df846f
X-Yyy-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>







|



|











|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with two providers and region
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=240750deb9263d4c8ece71c016f3919b56e518249390ef075740f94ef8df846f
X-Yyy-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1936.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /19360002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /%TESTNUMBER0002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with two providers, region and service
</name>
<tool>
lib1936
</tool>

<command>
http://%HOSTIP:%HTTPPORT/1936/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /1936/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/sss/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=f32cf87977cea5d3274b524b53e5d28f4aac54c372f710ae0cc3a9ececaf169f
X-Yyy-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>







|



|











|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
crypto
</features>

<name>
HTTP AWS_SIGV4 with two providers, region and service
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/sss/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=f32cf87977cea5d3274b524b53e5d28f4aac54c372f710ae0cc3a9ececaf169f
X-Yyy-Date: 19700101T000000Z

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test194.
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
HTTP resume transfer with the whole file already downloaded and --fail
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/194 -C 87 --fail
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/194 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=87-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# CURLE_HTTP_RETURNED_ERROR







|






|







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
HTTP resume transfer with the whole file already downloaded and --fail
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -C 87 --fail
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=87-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# CURLE_HTTP_RETURNED_ERROR
Changes to jni/curl/tests/data/test195.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP response 530 after PASS, temporarily not allowed access
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/195
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
67







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP response 530 after PASS, temporarily not allowed access
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
67
Changes to jni/curl/tests/data/test196.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP transient error, retry request once
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/196 --retry 1
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 67 is CURLE_LOGIN_DENIED
<errorcode>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP transient error, retry request once
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --retry 1
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 67 is CURLE_LOGIN_DENIED
<errorcode>
Changes to jni/curl/tests/data/test197.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
retry
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 503 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 21

server not available
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --retry on 503 error with output to stdout
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/197 --retry 1000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /197 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /197 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 503 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 21

server not available
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</stdout>

</verify>
</testcase>













|






|


















|







|




|








|




|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
retry
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 503 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 21

server not available
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</data1>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --retry on 503 error with output to stdout
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --retry 1000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 503 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 21

server not available
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test198.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP GET
retry
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 503 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 21

server not available
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</data1>

<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</datacheck>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --retry on 503 error with output to file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/198 --retry 1000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /198 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /198 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>













|






|








|


















|







|




|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP GET
retry
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 503 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 21

server not available
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</data1>

<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Connection: close

ok
</datacheck>

</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --retry on 503 error with output to file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --retry 1000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test199.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
globbing
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
globbing
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP with -d, -G and {}
 </name>
 <command>
-d "foo=moo&moo=poo" "http://%HOSTIP:%HTTPPORT/{199,199}" -G
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /199?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /199?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|




|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP with -d, -G and {}
 </name>
 <command>
-d "foo=moo&moo=poo" "http://%HOSTIP:%HTTPPORT/{%TESTNUMBER,%TESTNUMBER}" -G
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP Basic auth
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET with user and password
 </name>
 <command>
 -u fake:user http://%HOSTIP:%HTTPPORT/2
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<data>
[insert full protocol verifiction dump here]
</data>
</verify>
</testcase>













|

















|







|






<
<
<


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46



47
48
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP Basic auth
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET with user and password
 </name>
 <command>
 -u fake:user http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*

</protocol>



</verify>
</testcase>
Changes to jni/curl/tests/data/test200.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
file
</server>
 <name>
basic file:// file
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test200.txt
</command>
<file name="log/test200.txt">
foo
   bar
bar
   foo
moo
</file>
</client>







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
file
</server>
 <name>
basic file:// file
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>
Changes to jni/curl/tests/data/test2000.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
ftp
file
</server>
 <name>
FTP RETR followed by FILE
 </name>
<command option="no-include">
ftp://%HOSTIP:%FTPPORT/2000 file://localhost%FILE_PWD/log/test2000.txt
</command>
<file name="log/test2000.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 2000
RETR 2000
QUIT
</protocol>
<stdout>
data
    to
      see
that FTP







|

|

















|
|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
ftp
file
</server>
 <name>
FTP RETR followed by FILE
 </name>
<command option="no-include">
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER file://localhost%FILE_PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
<stdout>
data
    to
      see
that FTP
Changes to jni/curl/tests/data/test2001.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</info>

#
# Server-side
<reply>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</info>

#
# Server-side
<reply>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
ftp
file
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20010001 ftp://%HOSTIP:%FTPPORT/20010002 file://localhost%FILE_PWD/log/test2001.txt
</command>
<file name="log/test2001.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20010001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 20010002
RETR 20010002
QUIT
</protocol>
<stdout>
-foo-
data
    to
      see







|

|












|









|
|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
ftp
file
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER0002
RETR %TESTNUMBER0002
QUIT
</protocol>
<stdout>
-foo-
data
    to
      see
Changes to jni/curl/tests/data/test2002.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</info>

#
# Server-side
<reply>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</info>

#
# Server-side
<reply>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20020001 ftp://%HOSTIP:%FTPPORT/20020002 file://localhost%FILE_PWD/log/test2002.txt tftp://%HOSTIP:%TFTPPORT//20020003
</command>
<file name="log/test2002.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20020001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 20020002
RETR 20020002
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /20020003
QUIT
</protocol>
<stdout>
-foo-
data
    to
      see







|

|












|









|
|





|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER0003
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER0002
RETR %TESTNUMBER0002
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER0003
QUIT
</protocol>
<stdout>
-foo-
data
    to
      see
Changes to jni/curl/tests/data/test2003.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</info>

#
# Server-side
<reply>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</info>

#
# Server-side
<reply>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ then again in reverse order
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20030001 ftp://%HOSTIP:%FTPPORT/20030002 file://localhost%FILE_PWD/log/test2003.txt tftp://%HOSTIP:%TFTPPORT//20030003 tftp://%HOSTIP:%TFTPPORT//20030003 file://localhost%FILE_PWD/log/test2003.txt ftp://%HOSTIP:%FTPPORT/20030002 http://%HOSTIP:%HTTPPORT/20030001
</command>
<file name="log/test2003.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20030001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 20030002
RETR 20030002
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /20030003
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /20030003
EPSV
SIZE 20030002
RETR 20030002
GET /20030001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

QUIT
</protocol>
<stdout>







|

|












|









|
|





|





|

|
|
|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ then again in reverse order
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER0003 tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER0003 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002 http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER0002
RETR %TESTNUMBER0002
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER0003
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER0003
EPSV
SIZE %TESTNUMBER0002
RETR %TESTNUMBER0002
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

QUIT
</protocol>
<stdout>
Changes to jni/curl/tests/data/test2004.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
tftp
sftp
</server>
 <name>
TFTP RRQ followed by SFTP retrieval followed by FILE followed by SCP retrieval then again in reverse order
 </name>
<command option="no-include">
--key curl_client_key --pubkey curl_client_key.pub -u %USER: tftp://%HOSTIP:%TFTPPORT//2004 sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test2004.txt file://localhost%FILE_PWD/log/test2004.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/test2004.txt file://localhost%FILE_PWD/log/test2004.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test2004.txt tftp://%HOSTIP:%TFTPPORT//2004 --insecure
</command>
<file name="log/test2004.txt">
This is test data
for several protocols
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /2004
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /2004
</protocol>
<stdout>
Test data file
for tftp test
This is test data
for several protocols
This is test data







|

|














|





|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
tftp
sftp
</server>
 <name>
TFTP RRQ followed by SFTP retrieval followed by FILE followed by SCP retrieval then again in reverse order
 </name>
<command option="no-include">
--key curl_client_key --pubkey curl_client_key.pub -u %USER: tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.txt file://localhost%FILE_PWD/log/test%TESTNUMBER.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.txt file://localhost%FILE_PWD/log/test%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --insecure
</command>
<file name="log/test%TESTNUMBER.txt">
This is test data
for several protocols
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
<stdout>
Test data file
for tftp test
This is test data
for several protocols
This is test data
Changes to jni/curl/tests/data/test2005.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 37
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2005; charset=funny; option=strange
Funny-head: yesyes

Data delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, HTTP resource
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2005.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2005.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2005">
   <verification>
    <hash type="sha256">a430d26389c69b7a245a9ad692cf20b4dc026fb7c2ff8a2c164c49a77130d6d9</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2005</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2005 log/name2005
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2005 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2005">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout2005">
</file2>
<file3 name="log/stderr2005" mode="text">
Metalink: parsing (file://%PWD/log/test2005.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2005.metalink) OK
Metalink: fetching (log/download2005) from (http://%HOSTIP:%HTTPPORT/2005)...
Metalink: fetching (log/download2005) from (http://%HOSTIP:%HTTPPORT/2005) OK
Metalink: validating (log/download2005)...
Metalink: validating (log/download2005) [sha-256] OK
</file3>
<stripfile3>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile3>
</verify>
</testcase>







|




















|


|



|




|






|







|





|


|

|
|
|
|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 37
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, HTTP resource
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
    <hash type="sha256">a430d26389c69b7a245a9ad692cf20b4dc026fb7c2ff8a2c164c49a77130d6d9</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout%TESTNUMBER">
</file2>
<file3 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
</file3>
<stripfile3>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile3>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2006.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:49:01 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2006; charset=funny; option=strange
Funny-head: yesyes

Some data delivered from an HTTP resource
</data>
</reply>

#







|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:49:01 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Some data delivered from an HTTP resource
</data>
</reply>

#
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 <name>
Metalink local XML file, HTTP resource, using -O -D file
 </name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2006.metalink -O -D log/heads2006
</command>
# local metalink file written before test command runs
<file name="log/test2006.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2006">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">319cb6be756734b7ff689628ca3265580cdae6a0e38f42d4ac612ff4fba143b0</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2006</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2006 log/name2006
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2006 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2006">
Some data delivered from an HTTP resource
</file1>

# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads2006">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:49:01 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2006; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2006">
</file3>
<file4 name="log/stderr2006" mode="text">
Metalink: parsing (file://%PWD/log/test2006.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2006.metalink) OK
Metalink: fetching (log/download2006) from (http://%HOSTIP:%HTTPPORT/2006)...
Metalink: fetching (log/download2006) from (http://%HOSTIP:%HTTPPORT/2006) OK
Metalink: validating (log/download2006)...
Metalink: validating (log/download2006) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>







|


|



|





|






|







|





|









|










|



|

|
|
|
|
|
|
|






42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 <name>
Metalink local XML file, HTTP resource, using -O -D file
 </name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink -O -D log/heads%TESTNUMBER
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">319cb6be756734b7ff689628ca3265580cdae6a0e38f42d4ac612ff4fba143b0</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Some data delivered from an HTTP resource
</file1>

# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads%TESTNUMBER">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:49:01 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout%TESTNUMBER">
</file3>
<file4 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2007.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:50:02 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2007; charset=funny; option=strange
Funny-head: yesyes

Something delivered from an HTTP resource
</data>
</reply>

#







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:50:02 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Something delivered from an HTTP resource
</data>
</reply>

#
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 <name>
Metalink local XML file, HTTP resource, using -O -J -D file
 </name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2007.metalink -J -O -D log/heads2007
</command>
# local metalink file written before test command runs
<file name="log/test2007.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2007">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">52899e30f80e3490632d505653204e1fb5b02bda141048704ce9a0ed00b8a3f5</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2007</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2007 log/name2007
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2007 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2007">
Something delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads2007">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:50:02 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2007; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2007">
</file3>
<file4 name="log/stderr2007" mode="text">
Metalink: parsing (file://%PWD/log/test2007.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2007.metalink) OK
Metalink: fetching (log/download2007) from (http://%HOSTIP:%HTTPPORT/2007)...
Metalink: fetching (log/download2007) from (http://%HOSTIP:%HTTPPORT/2007) OK
Metalink: validating (log/download2007)...
Metalink: validating (log/download2007) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>







|


|



|





|






|







|





|








|










|



|

|
|
|
|
|
|
|






43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 <name>
Metalink local XML file, HTTP resource, using -O -J -D file
 </name>
<setenv>
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink -J -O -D log/heads%TESTNUMBER
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">52899e30f80e3490632d505653204e1fb5b02bda141048704ce9a0ed00b8a3f5</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Something delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads%TESTNUMBER">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:50:02 GMT
Server: test-server/fake
Content-Length: 42
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout%TESTNUMBER">
</file3>
<file4 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2008.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 15:23:48 GMT
Server: test-server/fake
Content-Length: 43
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2008; charset=funny; option=strange
Funny-head: yesyes

Some stuff delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<features>
file
Metalink
</features>
<server>
http
</server>
 <name>
Metalink local XML file, HTTP resource, using -o fname -D file
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2008.metalink -o log/outfile2008 -D log/heads2008
</command>
# local metalink file written before test command runs
<file name="log/test2008.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2008">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">711b1b566b536c5baae9b36f2f5c1830a7c8ff126d1afa2febc5b59f8d0aab54</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2008</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2008 log/name2008 log/outfile2008
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2008 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2008">
Some stuff delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads2008">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 15:23:48 GMT
Server: test-server/fake
Content-Length: 43
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2008; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2008">
</file3>
<file4 name="log/stderr2008" mode="text">
Metalink: parsing (file://%PWD/log/test2008.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2008.metalink) OK
Metalink: fetching (log/download2008) from (http://%HOSTIP:%HTTPPORT/2008)...
Metalink: fetching (log/download2008) from (http://%HOSTIP:%HTTPPORT/2008) OK
Metalink: validating (log/download2008)...
Metalink: validating (log/download2008) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>







|




















|


|



|





|






|







|





|








|










|



|

|
|
|
|
|
|
|






14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 15:23:48 GMT
Server: test-server/fake
Content-Length: 43
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Some stuff delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<features>
file
Metalink
</features>
<server>
http
</server>
 <name>
Metalink local XML file, HTTP resource, using -o fname -D file
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">711b1b566b536c5baae9b36f2f5c1830a7c8ff126d1afa2febc5b59f8d0aab54</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/outfile%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Some stuff delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads%TESTNUMBER">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 15:23:48 GMT
Server: test-server/fake
Content-Length: 43
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout%TESTNUMBER">
</file3>
<file4 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2009.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 16:27:17 GMT
Server: test-server/fake
Content-Length: 46
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2009; charset=funny; option=strange
Funny-head: yesyes

Some contents delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<features>
file
Metalink
</features>
<server>
http
</server>
 <name>
Metalink local XML file, HTTP resource, using -o fname -J -D file
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2009.metalink -J -o log/outfile2009 -D log/heads2009
</command>
# local metalink file written before test command runs
<file name="log/test2009.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2009">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">e4c5b83384ba7d5f8e201d61747a14f29baacd7dfadce0fbd56661db4bba72b2</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2009</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2009 log/name2009 log/outfile2009
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2009 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2009">
Some contents delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads2009">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 16:27:17 GMT
Server: test-server/fake
Content-Length: 46
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2009; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2009">
</file3>
<file4 name="log/stderr2009" mode="text">
Metalink: parsing (file://%PWD/log/test2009.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2009.metalink) OK
Metalink: fetching (log/download2009) from (http://%HOSTIP:%HTTPPORT/2009)...
Metalink: fetching (log/download2009) from (http://%HOSTIP:%HTTPPORT/2009) OK
Metalink: validating (log/download2009)...
Metalink: validating (log/download2009) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>







|




















|


|



|





|






|







|





|








|










|



|

|
|
|
|
|
|
|






15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 16:27:17 GMT
Server: test-server/fake
Content-Length: 46
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Some contents delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<features>
file
Metalink
</features>
<server>
http
</server>
 <name>
Metalink local XML file, HTTP resource, using -o fname -J -D file
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink -J -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">e4c5b83384ba7d5f8e201d61747a14f29baacd7dfadce0fbd56661db4bba72b2</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/outfile%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Some contents delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads%TESTNUMBER">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 16:27:17 GMT
Server: test-server/fake
Content-Length: 46
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout%TESTNUMBER">
</file3>
<file4 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2010.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 17:37:27 GMT
Server: test-server/fake
Content-Length: 41
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2010; charset=funny; option=strange
Funny-head: yesyes

Contents delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<features>
file
Metalink
</features>
<server>
http
</server>
 <name>
Metalink local XML file, HTTP resource, using -o fname -D file
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2010.metalink -o log/outfile2010 -D log/heads2010
</command>
# local metalink file written before test command runs
<file name="log/test2010.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2010">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">19dcb4e2a99b9cd02c30b1ed6c55869b7ef8cda9f985648909c48a6dbb54356c</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2010</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2010 log/name2010 log/outfile2010
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2010">
Contents delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads2010">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 17:37:27 GMT
Server: test-server/fake
Content-Length: 41
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2010; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2010">
</file3>
<file4 name="log/stderr2010" mode="text">
Metalink: parsing (file://%PWD/log/test2010.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2010.metalink) OK
Metalink: fetching (log/download2010) from (http://%HOSTIP:%HTTPPORT/2010)...
Metalink: fetching (log/download2010) from (http://%HOSTIP:%HTTPPORT/2010) OK
Metalink: validating (log/download2010)...
Metalink: validating (log/download2010) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>







|




















|


|



|





|






|







|





|








|










|



|

|
|
|
|
|
|
|






14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 17:37:27 GMT
Server: test-server/fake
Content-Length: 41
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Contents delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<features>
file
Metalink
</features>
<server>
http
</server>
 <name>
Metalink local XML file, HTTP resource, using -o fname -D file
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
    <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
    <hash type="sha256">19dcb4e2a99b9cd02c30b1ed6c55869b7ef8cda9f985648909c48a6dbb54356c</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/outfile%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Contents delivered from an HTTP resource
</file1>
# The Content-Length replace here is to handle with 4/5 digit port number in
# the content
<stripfile2>
s/Last-Modified:.*//
s/Content-Length: 49[67]/Content-Length: yeps/
</stripfile2>
<file2 name="log/heads%TESTNUMBER">
Content-Length: yeps
Accept-ranges: bytes


HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 17:37:27 GMT
Server: test-server/fake
Content-Length: 41
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout%TESTNUMBER">
</file3>
<file4 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
</file4>
<stripfile4>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile4>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2011.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 37
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2011; charset=funny; option=strange
Funny-head: yesyes

Data delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, HTTP resource, hash mismatch
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2011.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2011.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2011">
   <verification>
    <hash type="sha256">badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2011</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2011 log/name2011
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2011 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2011">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout2011">
</file2>
<file3 name="log/stderr2011" mode="text">
Metalink: parsing (file://%PWD/log/test2011.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2011.metalink) OK
Metalink: fetching (log/download2011) from (http://%HOSTIP:%HTTPPORT/2011)...
Metalink: fetching (log/download2011) from (http://%HOSTIP:%HTTPPORT/2011) OK
Metalink: validating (log/download2011)...
Metalink: validating (log/download2011) [sha-256] FAILED (digest mismatch)
</file3>
<stripfile3>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile3>
</verify>
</testcase>







|




















|


|



|




|






|







|





|


|

|
|
|
|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 37
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, HTTP resource, hash mismatch
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
    <hash type="sha256">badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout%TESTNUMBER">
</file2>
<file3 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) [sha-256] FAILED (digest mismatch)
</file3>
<stripfile3>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile3>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2012.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 46
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2012; charset=funny; option=strange
Funny-head: yesyes

Some contents delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, HTTP resource, without hash
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2012.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2012.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2012">
   <verification>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2012</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2012 log/name2012
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2012 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download2012">
Some contents delivered from an HTTP resource
</file1>
<file2 name="log/stdout2012">
</file2>
<file3 name="log/stderr2012" mode="text">
Metalink: parsing (file://%PWD/log/test2012.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2012.metalink) WARNING (digest missing)
Metalink: fetching (log/download2012) from (http://%HOSTIP:%HTTPPORT/2012)...
Metalink: fetching (log/download2012) from (http://%HOSTIP:%HTTPPORT/2012) OK
Metalink: validating (log/download2012)...
Metalink: validating (log/download2012) FAILED (digest missing)
</file3>
<stripfile3>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile3>
</verify>
</testcase>







|




|




















|


|



|



|






|







|





|


|

|
|
|
|
|
|
|






8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun %TESTNUMBER 14:49:00 GMT
Server: test-server/fake
Content-Length: 46
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Some contents delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, HTTP resource, without hash
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER">
   <verification>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file1 name="log/download%TESTNUMBER">
Some contents delivered from an HTTP resource
</file1>
<file2 name="log/stdout%TESTNUMBER">
</file2>
<file3 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (digest missing)
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
Metalink: validating (log/download%TESTNUMBER)...
Metalink: validating (log/download%TESTNUMBER) FAILED (digest missing)
</file3>
<stripfile3>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile3>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2013.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2013; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix absolute path
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2013.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2013.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="/tmp/download2013">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2013</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2013 log/name2013 /tmp/download2013
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2013">
</file1>
<file2 name="log/stderr2013" mode="text">
Metalink: parsing (file://%PWD/log/test2013.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2013.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2013.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix absolute path
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="/tmp/download%TESTNUMBER">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER /tmp/download%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2014.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2014; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix path relative to current
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2014.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2014.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="./log/download2014">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2014</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2014 log/name2014 log/download2014
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2014">
</file1>
<file2 name="log/stderr2014" mode="text">
Metalink: parsing (file://%PWD/log/test2014.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2014.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2014.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix path relative to current
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="./log/download%TESTNUMBER">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2015.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2015; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix path relative to upper
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2015.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2015.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="../tests/log/download2015">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2015</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2015 log/name2015 log/download2015
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2015">
</file1>
<file2 name="log/stderr2015" mode="text">
Metalink: parsing (file://%PWD/log/test2015.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2015.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2015.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix path relative to upper
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="../tests/log/download%TESTNUMBER">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2016.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2016; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix path traversal
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2016.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2016.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/../log/download2016">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2016</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2016 log/name2016 log/download2016
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2016">
</file1>
<file2 name="log/stderr2016" mode="text">
Metalink: parsing (file://%PWD/log/test2016.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2016.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2016.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix path traversal
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/../log/download%TESTNUMBER">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2017.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2017; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix home path traversal
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2017.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2017.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="~/download2017">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2017</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2017 log/name2017
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2017">
</file1>
<file2 name="log/stderr2017" mode="text">
Metalink: parsing (file://%PWD/log/test2017.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2017.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2017.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix home path traversal
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="~/download%TESTNUMBER">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2018.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2018; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name I
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2018.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2018.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/.download2018">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2018</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2018 log/name2018 log/.download2018
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2018">
</file1>
<file2 name="log/stderr2018" mode="text">
Metalink: parsing (file://%PWD/log/test2018.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2018.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2018.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name I
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/.download%TESTNUMBER">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/.download%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2019.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2019; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name II
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2019.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2019.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name=".">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2019</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2019 log/name2019
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2019">
</file1>
<file2 name="log/stderr2019" mode="text">
Metalink: parsing (file://%PWD/log/test2019.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2019.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2019.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|








|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name II
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name=".">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test202.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
file
</server>
 <name>
two file:// URLs to stdout
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test202.txt FILE://localhost%FILE_PWD/log/test202.txt
</command>
<file name="log/test202.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>







|

|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
file
</server>
 <name>
two file:// URLs to stdout
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test%TESTNUMBER.txt FILE://localhost%FILE_PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
Changes to jni/curl/tests/data/test2020.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2020; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name III
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2020.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2020.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="..">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2020</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2020 log/name2020
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2020">
</file1>
<file2 name="log/stderr2020" mode="text">
Metalink: parsing (file://%PWD/log/test2020.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2020.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2020.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|








|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name III
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="..">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2021.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2021; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name IV
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2021.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2021.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2021 >/dev/null">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2021</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2021 log/name2021 log/download2021
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2021">
</file1>
<file2 name="log/stderr2021" mode="text">
Metalink: parsing (file://%PWD/log/test2021.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2021.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2021.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name IV
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER >/dev/null">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2022.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name2022; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name V
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test2022.metalink
</command>
# local metalink file written before test command runs
<file name="log/test2022.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download2022 |/dev/null">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/2022</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/2022 log/name2022 log/download2022
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2022">
</file1>
<file2 name="log/stderr2022" mode="text">
Metalink: parsing (file://%PWD/log/test2022.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2022.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2022.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>







|




















|


|



|




|






|






|

|
|
|
|






13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Wed, 20 Jun 2012 14:49:00 GMT
Server: test-server/fake
Content-Length: 56
Connection: close
Content-Type: text/html
Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
Funny-head: yesyes

Data that should not be delivered from an HTTP resource
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
file
Metalink
</features>
 <name>
Metalink local XML file, attempt Unix questionable file name V
 </name>
<command option="no-output,no-include">
--metalink file://%PWD/log/test%TESTNUMBER.metalink
</command>
# local metalink file written before test command runs
<file name="log/test%TESTNUMBER.metalink">
<?xml version="1.0" encoding="utf-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/">
 <files>
  <file name="log/download%TESTNUMBER |/dev/null">
   <verification>
    <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
   </verification>
   <resources maxconnections="1">
    <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
   </resources>
  </file>
 </files>
</metalink>
</file>
<postcheck>
perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout%TESTNUMBER">
</file1>
<file2 name="log/stderr%TESTNUMBER" mode="text">
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2023.
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2023 basic basic
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20230100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20230200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /20230300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20230400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20230500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|




|




|




|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER basic basic
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2024.
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2024 basic digest
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20240100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20240200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20240200", response="ed646c565f79e2dd9fa37cb5a621213c"
Accept: */*

GET /20240300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20240400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20240400", response="9741ced8caacc6124770187b36f007c5"
Accept: */*

GET /20240500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20240500", response="5bc77ec8c2d443b27a1b55f1fd8fbb13"
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|

|


|




|

|


|

|





129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER basic digest
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/%TESTNUMBER0200", response="ed646c565f79e2dd9fa37cb5a621213c"
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/%TESTNUMBER0400", response="9741ced8caacc6124770187b36f007c5"
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/%TESTNUMBER0500", response="5bc77ec8c2d443b27a1b55f1fd8fbb13"
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2025.
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2025 basic ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20250100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20250200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20250200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20250300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20250400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20250400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20250500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20250500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|




|




|




|




|




|




|







211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER basic ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2026.
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2026 digest basic
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20260100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /20260100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b"
Accept: */*

GET /20260200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /20260300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /20260300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae"
Accept: */*

GET /20260400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20260500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

</protocol>
</verify>
</testcase>







|









|



|

|


|




|



|

|


|




|







165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER digest basic
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/%TESTNUMBER0100", response="5f992a2e761ab926256419f7c685f85b"
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/%TESTNUMBER0300", response="132242e602882251929be93228c830ae"
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2027.
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2027 digest digest
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20270100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /20270100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20270100", response="f7fd60eefaff5225971bf9b3d80d6ba6"
Accept: */*

GET /20270200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20270200", response="785ca3ef511999f7e9c178195f5b388c"
Accept: */*

GET /20270300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /20270300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20270300", response="4c735d2360fd6848e7cb32a11ae3612b"
Accept: */*

GET /20270400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"
Accept: */*

GET /20270400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"
Accept: */*

GET /20270500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20270500", response="8ef4d935fd964a46c3965c0863b52cf1"
Accept: */*

</protocol>
</verify>
</testcase>







|









|



|

|


|

|


|



|

|


|

|


|

|


|

|





188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER digest digest
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/%TESTNUMBER0100", response="f7fd60eefaff5225971bf9b3d80d6ba6"
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/%TESTNUMBER0200", response="785ca3ef511999f7e9c178195f5b388c"
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/%TESTNUMBER0300", response="4c735d2360fd6848e7cb32a11ae3612b"
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/%TESTNUMBER0400", response="f5906785511fb60a2af8b1cd53008ead"
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/%TESTNUMBER0400", response="f5906785511fb60a2af8b1cd53008ead"
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/%TESTNUMBER0500", response="8ef4d935fd964a46c3965c0863b52cf1"
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2028.
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2028 digest ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20280100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /20280100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20280100", response="53c80666f5e3a4a55f92a66aaf0078bb"
Accept: */*

GET /20280200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20280200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20280300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /20280300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20280300", response="1aa5d90da9803ca12d04b24e0f19476e"
Accept: */*

GET /20280400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20280400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20280500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20280500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>







|









|



|

|


|




|




|



|

|


|




|




|




|







247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER digest ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/%TESTNUMBER0100", response="53c80666f5e3a4a55f92a66aaf0078bb"
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/%TESTNUMBER0300", response="1aa5d90da9803ca12d04b24e0f19476e"
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2029.
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2029 ntlm basic
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20290100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20290100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20290200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /20290300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20290300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20290400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /20290500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|




|




|




|




|




|







184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm basic
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test203.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
file:/path URL with a single slash
 </name>
<setenv>
# Needed for MSYS2 to not convert
MSYS2_ARG_CONV_EXCL=file:
</setenv>
<command option="no-include">
file:%FILE_PWD/log/test203.txt
</command>
<file name="log/test203.txt">
foo
   bar
bar
   foo
moo
</file>
</client>







|

|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
file:/path URL with a single slash
 </name>
<setenv>
# Needed for MSYS2 to not convert
MSYS2_ARG_CONV_EXCL=file:
</setenv>
<command option="no-include">
file:%FILE_PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>
Changes to jni/curl/tests/data/test2030.
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2030 ntlm digest
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20300100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20300100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20300200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20300200", response="2f2d784ba53a0a307758a90e98d25c27"
Accept: */*

GET /20300300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20300300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20300400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"
Accept: */*

GET /20300400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"
Accept: */*

GET /20300500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20300500", response="198757e61163a779cf24ed4c49c1ad7d"
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|




|

|


|




|




|

|


|

|


|

|





236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm digest
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/%TESTNUMBER0200", response="2f2d784ba53a0a307758a90e98d25c27"
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/%TESTNUMBER0400", response="d6262e9147db08c62ff2f53b515861e8"
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/%TESTNUMBER0400", response="d6262e9147db08c62ff2f53b515861e8"
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/%TESTNUMBER0500", response="198757e61163a779cf24ed4c49c1ad7d"
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2031.
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2031 ntlm ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20310100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20310100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20310200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20310200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20310300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20310300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20310400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20310400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /20310500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20310500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|




|




|




|




|




|




|




|




|







250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2032.
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/2032
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20320100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /20320100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /20320200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /20320200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|




|




|







82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2034.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET with DER public key pinning
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pub.der https://localhost:%HTTPSPORT/2034
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2034 HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|











|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET with DER public key pinning
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pub.der https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2035.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
 <name>
HTTPS wrong DER pinnedpubkey but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.der https://localhost:%HTTPSPORT/2035
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>








|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
 <name>
HTTPS wrong DER pinnedpubkey but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.der https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

Changes to jni/curl/tests/data/test2037.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET with PEM public key pinning
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pub.pem https://localhost:%HTTPSPORT/2037
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
</strip>
<protocol>
GET /2037 HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|












|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET with PEM public key pinning
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pub.pem https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
</strip>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2038.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
 <name>
HTTPS wrong PEM pinnedpubkey but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pem https://localhost:%HTTPSPORT/2038
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>








|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
 <name>
HTTPS wrong PEM pinnedpubkey but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pem https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

Changes to jni/curl/tests/data/test2039.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (optional .netrc with 'default' override; no user/pass) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc2039 ftp://%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc2039" >
# the following two lines were created while testing curl
default login userdef password passwddef
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>








|

|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
ftp
</server>
 <name>
FTP (optional .netrc with 'default' override; no user/pass) dir list PASV
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER ftp://%HOSTIP:%FTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
# the following two lines were created while testing curl
default login userdef password passwddef
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

Changes to jni/curl/tests/data/test204.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
file
</server>
 <name>
"upload" with file://
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/result204.txt -T log/upload204.txt
</command>
<file name="log/upload204.txt">
data
in
file
to
write
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<file name="log/result204.txt">
data
in
file
to
write
</file>
</verify>







|

|










|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
file
</server>
 <name>
"upload" with file://
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/result%TESTNUMBER.txt -T log/upload%TESTNUMBER.txt
</command>
<file name="log/upload%TESTNUMBER.txt">
data
in
file
to
write
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<file name="log/result%TESTNUMBER.txt">
data
in
file
to
write
</file>
</verify>
Changes to jni/curl/tests/data/test2040.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
<name>
HTTP Basic authorization, then without authorization
</name>
<command option="no-output,no-include">
-u testuser:testpass http://%HOSTIP:%HTTPPORT/20400100 --next --no-basic http://%HOSTIP:%HTTPPORT/20400200
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /20400100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*

GET /20400200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
Finally, this is the real page!







|






|





|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
<name>
HTTP Basic authorization, then without authorization
</name>
<command option="no-output,no-include">
-u testuser:testpass http://%HOSTIP:%HTTPPORT/%TESTNUMBER0100 --next --no-basic http://%HOSTIP:%HTTPPORT/%TESTNUMBER0200
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout>
Finally, this is the real page!
Changes to jni/curl/tests/data/test2041.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET with base64-sha256 public key pinning
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//+JYNkp2GTGRgrvZMUkOxbFJQQqYpwNE6toGmBjz00D8= https://localhost:%HTTPSPORT/2041
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2041 HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|











|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET with base64-sha256 public key pinning
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//+JYNkp2GTGRgrvZMUkOxbFJQQqYpwNE6toGmBjz00D8= https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2042.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
 <name>
HTTPS wrong base64-sha256 pinnedpubkey but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//bSIggTf+ikMG0CtmDlpMVBd7yi7H1md4URogRPqerso= https://localhost:%HTTPSPORT/2042
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>








|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
 <name>
HTTPS wrong base64-sha256 pinnedpubkey but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//bSIggTf+ikMG0CtmDlpMVBd7yi7H1md4URogRPqerso= https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

Changes to jni/curl/tests/data/test2046.
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<testcase>
<info>
<keywords>
HTTP
HTTP GET
IDN
followlocation

--write-out
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./20460001

redirect
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</data1>
</reply>








>









|


|





|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<testcase>
<info>
<keywords>
HTTP
HTTP GET
IDN
followlocation
--resolve
--write-out
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./%TESTNUMBER0001

redirect
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</data1>
</reply>

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name
 </name>

 <command>
http://åäö.se:%HTTPPORT/2046 --resolve xn--4cab6c.se:%HTTPPORT:%HOSTIP -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2046 HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /20460001 HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./20460001

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
1
1
3
http://åäö.se:%HTTPPORT/20460001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>







|







|




|








|


|


|







|






49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name
 </name>

 <command>
http://åäö.se:%HTTPPORT/%TESTNUMBER --resolve xn--4cab6c.se:%HTTPPORT:%HOSTIP -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: xn--4cab6c.se:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./%TESTNUMBER0001

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
1
1
3
http://åäö.se:%HTTPPORT/%TESTNUMBER0001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2047.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./20470001

redirect
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</data1>
</reply>








|


|





|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./%TESTNUMBER0001

redirect
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
</data1>
</reply>

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name over HTTP proxy
 </name>

 <command>
http://åäö.se/2047 -x %HOSTIP:%HTTPPORT -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://xn--4cab6c.se/2047 HTTP/1.1
Host: xn--4cab6c.se
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://xn--4cab6c.se/20470001 HTTP/1.1
Host: xn--4cab6c.se
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./20470001

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
1
1
3
http://åäö.se/20470001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>







|







|





|









|


|


|







|






50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name over HTTP proxy
 </name>

 <command>
http://åäö.se/%TESTNUMBER -x %HOSTIP:%HTTPPORT -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://xn--4cab6c.se/%TESTNUMBER HTTP/1.1
Host: xn--4cab6c.se
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://xn--4cab6c.se/%TESTNUMBER0001 HTTP/1.1
Host: xn--4cab6c.se
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

<stdout>
HTTP/1.1 302 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Content-Type: text/plain
Location: ./%TESTNUMBER0001

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain; charset=us-ascii

OK
1
1
3
http://åäö.se/%TESTNUMBER0001
text/plain; charset=us-ascii
200
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2048.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
<name>
pinnedpubkey no-match must fail even when insecure
</name>
<command>
--insecure --cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost.nn-sv.pub.der https://localhost:%HTTPSPORT/2048
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
https Server-localhost-sv.pem
</server>
<name>
pinnedpubkey no-match must fail even when insecure
</name>
<command>
--insecure --cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost.nn-sv.pub.der https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test2049.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host
 </name>

 <command>
http://www1.example.com:8081/2049 --connect-to ::%HOSTIP:%HTTPPORT --next http://www2.example.com:8082/2049 --connect-to :8082:%HOSTIP:%HTTPPORT --next http://www3.example.com:8083/2049 --connect-to www3.example.com::%HOSTIP:%HTTPPORT --next http://www4.example.com:8084/2049 --connect-to www4.example.com:8084:%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2049 HTTP/1.1
Host: www1.example.com:8081
User-Agent: curl/%VERSION
Accept: */*

GET /2049 HTTP/1.1
Host: www2.example.com:8082
User-Agent: curl/%VERSION
Accept: */*

GET /2049 HTTP/1.1
Host: www3.example.com:8083
User-Agent: curl/%VERSION
Accept: */*

GET /2049 HTTP/1.1
Host: www4.example.com:8084
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>







|


















|







|




|




|




|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host
 </name>

 <command>
http://www1.example.com:8081/%TESTNUMBER --connect-to ::%HOSTIP:%HTTPPORT --next http://www2.example.com:8082/%TESTNUMBER --connect-to :8082:%HOSTIP:%HTTPPORT --next http://www3.example.com:8083/%TESTNUMBER --connect-to www3.example.com::%HOSTIP:%HTTPPORT --next http://www4.example.com:8084/%TESTNUMBER --connect-to www4.example.com:8084:%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: www1.example.com:8081
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: www2.example.com:8082
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: www3.example.com:8083
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: www4.example.com:8084
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test205.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
file
</server>
 <name>
"upload" with file://
 </name>
<command option="no-include">
file://localhost/%PWD/log/nonexisting/result205.txt -T log/upload205.txt
</command>
<file name="log/upload205.txt">
data
in
file
to
write
</file>
</client>







|

|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
file
</server>
 <name>
"upload" with file://
 </name>
<command option="no-include">
file://localhost/%PWD/log/nonexisting/result%TESTNUMBER.txt -T log/upload%TESTNUMBER.txt
</command>
<file name="log/upload%TESTNUMBER.txt">
data
in
file
to
write
</file>
</client>
Changes to jni/curl/tests/data/test2050.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<connect>
HTTP/1.1 200 Connection established

</connect>

<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>

<datacheck>
HTTP/1.1 200 Connection established

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
Connect to specific host via HTTP proxy (switch to tunnel mode automatically)
 </name>

 <command>
http://www.example.com.2050/2050 --connect-to ::connect.example.com.2050:%HTTPPORT -x %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT connect.example.com.2050:%HTTPPORT HTTP/1.1
Host: connect.example.com.2050:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /2050 HTTP/1.1
Host: www.example.com.2050
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>







|










|



















|










|
|





|
|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<connect>
HTTP/1.1 200 Connection established

</connect>

<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>

<datacheck>
HTTP/1.1 200 Connection established

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
Connect to specific host via HTTP proxy (switch to tunnel mode automatically)
 </name>

 <command>
http://www.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT connect.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: connect.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: www.example.com.%TESTNUMBER
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2051.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host: Re-use existing connections if possible
 </name>

 <command>
http://%HOSTIP:%HTTPPORT/2051 -w "%{num_connects}\n" --next --connect-to ::%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/2051 -w "%{num_connects}\n" --next http://%HOSTIP:%HTTPPORT/2051 -w "%{num_connects}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2051 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2051 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2051 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
1
OK
0
OK
0
</stdout>

</verify>
</testcase>







|


















|







|




|




|








|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host: Re-use existing connections if possible
 </name>

 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n" --next --connect-to ::%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n" --next http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
1
OK
0
OK
0
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2052.
1
2
3
4
5
6

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CONNECT_TO

</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host: Do not mix connections with and without a "connect to host"
 </name>

 <command>
http://www.example.com:%HTTPPORT/2052 --resolve www.example.com:%HTTPPORT:%HOSTIP -w "%{num_connects}\n" --next --resolve -www.example.com:%HTTPPORT --connect-to ::%HOSTIP:%HTTPPORT http://www.example.com:%HTTPPORT/2052 -w "%{num_connects}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2052 HTTP/1.1
Host: www.example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2052 HTTP/1.1
Host: www.example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
1
OK
1
</stdout>

</verify>
</testcase>






>








|


















|







|




|








|











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CONNECT_TO
--resolve
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host: Do not mix connections with and without a "connect to host"
 </name>

 <command>
http://www.example.com:%HTTPPORT/%TESTNUMBER --resolve www.example.com:%HTTPPORT:%HOSTIP -w "%{num_connects}\n" --next --resolve -www.example.com:%HTTPPORT --connect-to ::%HOSTIP:%HTTPPORT http://www.example.com:%HTTPPORT/%TESTNUMBER -w "%{num_connects}\n"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: www.example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: www.example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
1
OK
1
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2053.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host with IP addresses
 </name>

 <command>
http://10.0.0.1:8081/2053 --connect-to 10.0.0.1:8081:%HOSTIP:%HTTPPORT --next http://[fc00::1]:8082/2053 --connect-to [fc00::1]:8082:%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2053 HTTP/1.1
Host: 10.0.0.1:8081
User-Agent: curl/%VERSION
Accept: */*

GET /2053 HTTP/1.1
Host: [fc00::1]:8082
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>







|


















|







|




|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host with IP addresses
 </name>

 <command>
http://10.0.0.1:8081/%TESTNUMBER --connect-to 10.0.0.1:8081:%HOSTIP:%HTTPPORT --next http://[fc00::1]:8082/%TESTNUMBER --connect-to [fc00::1]:8082:%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: 10.0.0.1:8081
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: [fc00::1]:8082
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2054.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host: use the first "connect-to" string that matches
 </name>

 <command>
http://%HOSTIP:%HTTPPORT/2054 --connect-to foo::bar: --connect-to :123::456 --next http://www.example.com:%HTTPPORT/2054 --connect-to www.example.com::%HOSTIP: --connect-to www.example.com::foo: --next http://%HOSTIP:8083/2054 --connect-to :8083::%HTTPPORT --connect-to :8083::123 --next http://www.example.com:8084/2054 --connect-to www.example.com:8084:%HOSTIP:%HTTPPORT --connect-to www.example.com:8084:foo:123
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2054 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2054 HTTP/1.1
Host: www.example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2054 HTTP/1.1
Host: %HOSTIP:8083
User-Agent: curl/%VERSION
Accept: */*

GET /2054 HTTP/1.1
Host: www.example.com:8084
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>







|


















|







|




|




|




|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Connect to specific host: use the first "connect-to" string that matches
 </name>

 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --connect-to foo::bar: --connect-to :123::456 --next http://www.example.com:%HTTPPORT/%TESTNUMBER --connect-to www.example.com::%HOSTIP: --connect-to www.example.com::foo: --next http://%HOSTIP:8083/%TESTNUMBER --connect-to :8083::%HTTPPORT --connect-to :8083::123 --next http://www.example.com:8084/%TESTNUMBER --connect-to www.example.com:8084:%HOSTIP:%HTTPPORT --connect-to www.example.com:8084:foo:123
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: www.example.com:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:8083
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: www.example.com:8084
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2055.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<connect>
HTTP/1.1 200 Connection established

</connect>

<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>

<datacheck>
HTTP/1.1 200 Connection established

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</datacheck>
</reply>








|










|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<connect>
HTTP/1.1 200 Connection established

</connect>

<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</data>

<datacheck>
HTTP/1.1 200 Connection established

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 3
Content-Type: text/plain

OK
</datacheck>
</reply>

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 <name>
Connect to specific host via SOCKS proxy and HTTP proxy (switch to tunnel mode automatically)
 </name>
<features>
proxy
</features>
 <command>
http://www.example.com.2055/2055 --connect-to ::connect.example.com.2055:%HTTPPORT -x %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT connect.example.com.2055:%HTTPPORT HTTP/1.1
Host: connect.example.com.2055:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /2055 HTTP/1.1
Host: www.example.com.2055
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>







|







|
|





|
|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 <name>
Connect to specific host via SOCKS proxy and HTTP proxy (switch to tunnel mode automatically)
 </name>
<features>
proxy
</features>
 <command>
http://www.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT connect.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: connect.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: www.example.com.%TESTNUMBER
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test2056.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
!debug
</features>
<setenv>
LD_PRELOAD=%PWD/libtest/.libs/libstubgss.so
CURL_STUB_GSS_CREDS="KRB5_Alice"
</setenv>
<command>
-u: --negotiate http://%HOSTIP:%HTTPPORT/2056
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2056 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate IktSQjVfQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjE6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|






|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
!debug
</features>
<setenv>
LD_PRELOAD=%PWD/libtest/.libs/libstubgss.so
CURL_STUB_GSS_CREDS="KRB5_Alice"
</setenv>
<command>
-u: --negotiate http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate IktSQjVfQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjE6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test2057.
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
!debug
</features>
<setenv>
LD_PRELOAD=%PWD/libtest/.libs/libstubgss.so
CURL_STUB_GSS_CREDS="NTLM_Alice"
</setenv>
<command>
-u: --negotiate http://%HOSTIP:%HTTPPORT/2057
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2057 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate Ik5UTE1fQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjI6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
User-Agent: curl/%VERSION
Accept: */*

GET /2057 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate Ik5UTE1fQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjM6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|






|





|







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
!debug
</features>
<setenv>
LD_PRELOAD=%PWD/libtest/.libs/libstubgss.so
CURL_STUB_GSS_CREDS="NTLM_Alice"
</setenv>
<command>
-u: --negotiate http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate Ik5UTE1fQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjI6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate Ik5UTE1fQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjM6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test2058.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method and SHA-256
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2058 -u auser:apasswd --digest -T log/2058 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/2058">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/2058 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/2058 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/2058", response="fbed69f9f3fd304c8f1acb1a43eb32688b933c0e28055c16b926cbcec070aeed", algorithm=SHA-256
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue








|

|







|







|

|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method and SHA-256
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -T log/%TESTNUMBER -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/%TESTNUMBER">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="fbed69f9f3fd304c8f1acb1a43eb32688b933c0e28055c16b926cbcec070aeed", algorithm=SHA-256
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue

Changes to jni/curl/tests/data/test2059.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2059 -u auser:apasswd --digest -T log/2059 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/2059">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/2059 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/2059 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="fddc3bc7b753b73ab0848fd83cb20cbbca971258eb8d20c941dd5e0b010d66be", realm="testrealm", nonce="1053604144", uri="/2059", response="fc09be8192851e284e73e8b719b32a2f6f91cca0594e68713da8c49dc2c1656e", algorithm=SHA-512-256, userhash=true
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue








|

|







|







|

|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -T log/%TESTNUMBER -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/%TESTNUMBER">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="fddc3bc7b753b73ab0848fd83cb20cbbca971258eb8d20c941dd5e0b010d66be", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="fc09be8192851e284e73e8b719b32a2f6f91cca0594e68713da8c49dc2c1656e", algorithm=SHA-512-256, userhash=true
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue

Changes to jni/curl/tests/data/test206.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

And you should ignore this data.
</connect>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

And you should ignore this data.
</connect>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
Content-Length: 33

HTTP/1.1 200 OK swsbounce
Server: no

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
Content-Length: 33

HTTP/1.1 200 OK swsbounce
Server: no

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest
 </name>
 <command>
http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.haxx.se.206:8990 HTTP/1.1
Host: test.remote.haxx.se.206:8990
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.haxx.se.206:8990 HTTP/1.1
Host: test.remote.haxx.se.206:8990
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.206:8990", response="003e36decb4dbf6366b3ecb9b87c24ec"
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/2060002 HTTP/1.1
Host: test.remote.haxx.se.206:8990
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|






|
|



|
|
|



|
|







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest
 </name>
 <command>
http://test.remote.haxx.se.%TESTNUMBER:8990/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.%TESTNUMBER:8990", response="003e36decb4dbf6366b3ecb9b87c24ec"
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.haxx.se.%TESTNUMBER:8990
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2060.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2060 -u auser:apasswd --digest -T log/2060 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/2060">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/2060 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/2060 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/2060", response="3ce1e25ffa611bdbe90e2ab367b9602fa223db9f6de76ac667f0d6157e2178a6", algorithm=SHA-512-256
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue








|

|







|







|

|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -T log/%TESTNUMBER -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/%TESTNUMBER">
test
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="3ce1e25ffa611bdbe90e2ab367b9602fa223db9f6de76ac667f0d6157e2178a6", algorithm=SHA-512-256
Content-Range: bytes 2-4/5
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue

Changes to jni/curl/tests/data/test2061.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 SHA256 Digest authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2061 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2061 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2061 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/2061", response="9dc55255f1a2537b838311674b621d45346b862a81631bb20e4ce356ef25062d", algorithm=SHA-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 SHA256 Digest authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="9dc55255f1a2537b838311674b621d45346b862a81631bb20e4ce356ef25062d", algorithm=SHA-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2062.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 SHA-512-256 Digest authorization and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2062 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2062 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2062 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/2062", response="2af735ec3508f4dff99248ffbbe9de9002bfd7cc770cfa2b026cb334042a54e3", algorithm=SHA-512-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 SHA-512-256 Digest authorization and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="2af735ec3508f4dff99248ffbbe9de9002bfd7cc770cfa2b026cb334042a54e3", algorithm=SHA-512-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2063.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 SHA-512-256 Digest authorization and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2063 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2063 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2063 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="75af8a3500f771e58a52093a25e7905d6e428a511285c12ea1420c73078dfd61", realm="testrealm", nonce="1053604145", uri="/2063", response="43f7ab531dff687b5dc75617daa59d1fd67d648341d6d2655ca65ef5064cfb51", algorithm=SHA-512-256, userhash=true
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 SHA-512-256 Digest authorization and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="75af8a3500f771e58a52093a25e7905d6e428a511285c12ea1420c73078dfd61", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="43f7ab531dff687b5dc75617daa59d1fd67d648341d6d2655ca65ef5064cfb51", algorithm=SHA-512-256, userhash=true
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2064.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 Digest authorization with bad password and SHA256
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2064 -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2064 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2064 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/2064", response="a9c3ec1036068b336cbabefe9dfcad52ee8b89bc7c91ddbb5bb415c6acdf38a5", algorithm=SHA-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 Digest authorization with bad password and SHA256
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/%TESTNUMBER", response="a9c3ec1036068b336cbabefe9dfcad52ee8b89bc7c91ddbb5bb415c6acdf38a5", algorithm=SHA-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2065.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 Digest authorization with bad password, SHA-512-256 and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2065 -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2065 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2065 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/2065", response="5a5f20b0e601aeddc6f96422c2332d49ff431c49ab143b5f836ef76e9ac78f5e", algorithm=SHA-512-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 Digest authorization with bad password, SHA-512-256 and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/%TESTNUMBER", response="5a5f20b0e601aeddc6f96422c2332d49ff431c49ab143b5f836ef76e9ac78f5e", algorithm=SHA-512-256
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2066.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 Digest authorization with bad password, SHA-512-256 and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2066 -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2066 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2066 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="75af8a3500f771e58a52093a25e7905d6e428a511285c12ea1420c73078dfd61", realm="testrealm", nonce="2053604145", uri="/2066", response="a2e2ae589f575fb132991d6f550ef14bf7ef697d2fef1242d2498f07eafc77dc", algorithm=SHA-512-256, userhash=true
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with RFC7616 Digest authorization with bad password, SHA-512-256 and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="75af8a3500f771e58a52093a25e7905d6e428a511285c12ea1420c73078dfd61", realm="testrealm", nonce="2053604145", uri="/%TESTNUMBER", response="a2e2ae589f575fb132991d6f550ef14bf7ef697d2fef1242d2498f07eafc77dc", algorithm=SHA-512-256, userhash=true
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2067.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with SHA256 and user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/2067
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /2067 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /2067 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/2067", response="67b97af219c92fa7e8685e5bebb8e74892f6c6792e911c52bd2dfbf0b49272eb", algorithm=SHA-256
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>







|






|






|

|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with SHA256 and user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="67b97af219c92fa7e8685e5bebb8e74892f6c6792e911c52bd2dfbf0b49272eb", algorithm=SHA-256
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>
Changes to jni/curl/tests/data/test2068.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with SHA-512-256, userhash=false and user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/2068
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /2068 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /2068 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/2068", response="4bc9c97a72f1856bcec9b0e1518c6b7ee28773f91357d56840bdc30bd89ca68f", algorithm=SHA-512-256
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>







|






|






|

|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with SHA-512-256, userhash=false and user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="4bc9c97a72f1856bcec9b0e1518c6b7ee28773f91357d56840bdc30bd89ca68f", algorithm=SHA-512-256
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>
Changes to jni/curl/tests/data/test2069.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with SHA-512-256, userhash=true and user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/2069
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /2069 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /2069 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="fddc3bc7b753b73ab0848fd83cb20cbbca971258eb8d20c941dd5e0b010d66be", realm="testrealm", nonce="1053604144", uri="/2069", response="ff13d977110a471f30de75e747976e4de78d7a3d2425cd23ff46e67f4bc9ead7", algorithm=SHA-512-256, userhash=true
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>







|






|






|

|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<name>
HTTP POST --digest with SHA-512-256, userhash=true and user-specified Content-Length header
</name>
# This test is to ensure 'Content-Length: 0' is sent while negotiating auth
# even when there is a user-specified Content-Length header.
# https://github.com/curl/curl/pull/1242
<command>
-H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="fddc3bc7b753b73ab0848fd83cb20cbbca971258eb8d20c941dd5e0b010d66be", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="ff13d977110a471f30de75e747976e4de78d7a3d2425cd23ff46e67f4bc9ead7", algorithm=SHA-512-256, userhash=true
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>
Changes to jni/curl/tests/data/test207.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding closed prematurely
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/207
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /207 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# curl: (18) transfer closed with outstanding read data remaining







|







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding closed prematurely
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# curl: (18) transfer closed with outstanding read data remaining
Changes to jni/curl/tests/data/test2070.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>type

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>type

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Ignore certificate revocation "best effort" strategy
 </name>
  <setenv>
# This test is pointless if we're not using the schannel backend
CURL_SSL_BACKEND=schannel
 </setenv>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --ssl-revoke-best-effort https://localhost:%HTTPSPORT/2070
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2070 HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|











|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Ignore certificate revocation "best effort" strategy
 </name>
  <setenv>
# This test is pointless if we're not using the schannel backend
CURL_SSL_BACKEND=schannel
 </setenv>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --ssl-revoke-best-effort https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2072.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
file
</server>
<name>
file:// with unix path resolution behavior for the case of extra slashes
</name>
<command option="no-include">
file:////%PWD/log/test2072.txt
</command>
<precheck>
perl -e "print 'Test requires a unix system' if ( $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'msys');"
</precheck>
<file name="log/test2072.txt">
foo
   bar
bar
   foo
moo
</file>
</client>







|




|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
file
</server>
<name>
file:// with unix path resolution behavior for the case of extra slashes
</name>
<command option="no-include">
file:////%PWD/log/test%TESTNUMBER.txt
</command>
<precheck>
perl -e "print 'Test requires a unix system' if ( $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'msys');"
</precheck>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>
Changes to jni/curl/tests/data/test2073.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents1
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents2
</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP form posts with handle reset
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2073 -F 'name=a;filename=a.pdf' --next http://%HOSTIP:%HTTPPORT/2073 -F 'name=b;filename=b.jpg'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /2073 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 189

Content-Disposition: form-data; name="name"; filename="a.pdf"
Content-Type: application/pdf

a
POST /2073 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 184

Content-Disposition: form-data; name="name"; filename="b.jpg"
Content-Type: image/jpeg

b
</protocol>
</verify>
</testcase>












|






|
















|










|









|












1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents1
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 10

contents2
</data1>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP form posts with handle reset
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -F 'name=a;filename=a.pdf' --next http://%HOSTIP:%HTTPPORT/%TESTNUMBER -F 'name=b;filename=b.jpg'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 189

Content-Disposition: form-data; name="name"; filename="a.pdf"
Content-Type: application/pdf

a
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 184

Content-Disposition: form-data; name="name"; filename="b.jpg"
Content-Type: image/jpeg

b
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2074.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2074 --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2074 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Bearer mF_9.B5f-4.1JqM
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|








32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Bearer mF_9.B5f-4.1JqM
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2076.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
!SSPI
crypto
</features>
<name>
HTTP with digest auth and URI contains query
</name>
<command>
"http://%HOSTIP:%HTTPPORT/2076?query" -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /2076?query HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /2076?query HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/2076?query", response="5758bd3bbde7f33236e6ccd278eb59af"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
!SSPI
crypto
</features>
<name>
HTTP with digest auth and URI contains query
</name>
<command>
"http://%HOSTIP:%HTTPPORT/%TESTNUMBER?query" -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER?query HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER?query HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/%TESTNUMBER?query", response="5758bd3bbde7f33236e6ccd278eb59af"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2077.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<features>
GSS-API
</features>
<name>
curl --fail --negotiate to unauthenticated service fails
</name>
<command>
http://%HOSTIP:%HTTPPORT/2077 -u : --fail --negotiate
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
0







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<features>
GSS-API
</features>
<name>
curl --fail --negotiate to unauthenticated service fails
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u : --fail --negotiate
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
0
Changes to jni/curl/tests/data/test2078.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<features>
GSS-API
</features>
<name>
curl --negotiate should not send empty POST request only
</name>
<command>
http://%HOSTIP:%HTTPPORT/2078 -u : --negotiate --data name=value
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
<protocol nonewline="yes">
POST /2078 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

name=value







|









|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<features>
GSS-API
</features>
<name>
curl --negotiate should not send empty POST request only
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u : --negotiate --data name=value
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

name=value
Changes to jni/curl/tests/data/test208.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
HTTP PUT to a FTP URL with username+password - over HTTP proxy
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT ftp://daniel:mysecret@host.com/we/want/208 -T log/test208.txt
</command>
<file name="log/test208.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT ftp://daniel:mysecret@host.com/we/want/208 HTTP/1.1
Host: host.com:21
Authorization: Basic ZGFuaWVsOm15c2VjcmV0
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 78
Expect: 100-continue







|




















|

|















|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
HTTP PUT to a FTP URL with username+password - over HTTP proxy
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT ftp://daniel:mysecret@host.com/we/want/%TESTNUMBER -T log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT ftp://daniel:mysecret@host.com/we/want/%TESTNUMBER HTTP/1.1
Host: host.com:21
Authorization: Basic ZGFuaWVsOm15c2VjcmV0
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 78
Expect: 100-continue
Changes to jni/curl/tests/data/test2080.

cannot compute difference between binary files

Added jni/curl/tests/data/test2081.




































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<testcase>
<info>
<keywords>
HTTP
HTTP GET
referer
followlocation
--write-out
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close

This server reply is for testing a simple Location: following
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
Automatic referrer credential and anchor stripping check
 </name>
 <command>
http://user:pass@%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER#anchor --location --referer ';auto' --write-out '%{referer}\n'
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
52
</errorcode>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpwYXNz
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/our/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjpwYXNz
User-Agent: curl/%VERSION
Accept: */*
Referer: http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER

</protocol>
<stdout>
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close

http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test209.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Content-Length: 33

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Content-Length: 33

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.209:%HTTPPORT/path/2090002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.209:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.209:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.209:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.209:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/2090002 HTTP/1.1
Host: test.remote.example.com.209:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|
|




|
|




|
|






88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

GET /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test210.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
Get two FTP files from the same remote dir: no second CWD
 </name>
<command option="no-include">
ftp://%HOSTIP:%FTPPORT/a/path/210 ftp://%HOSTIP:%FTPPORT/a/path/210
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
EPSV
TYPE I
SIZE 210
RETR 210
EPSV
SIZE 210
RETR 210
QUIT
</protocol>
</verify>
</testcase>







|

















|
|

|
|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
Get two FTP files from the same remote dir: no second CWD
 </name>
<command option="no-include">
ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test2100.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test211.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
Get two FTP files with no remote EPSV support
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/211 ftp://%HOSTIP:%FTPPORT/a/path/211
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
EPSV
PASV
TYPE I
SIZE 211
RETR 211
PASV
SIZE 211
RETR 211
QUIT
</protocol>
</verify>
</testcase>







|


















|
|

|
|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
Get two FTP files with no remote EPSV support
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
PASV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test212.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<features>
ipv6
</features>
 <name>
Get two FTP files with no remote EPRT support
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/212 ftp://%HOSTIP:%FTPPORT/a/path/212 -P -
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>








|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<features>
ipv6
</features>
 <name>
Get two FTP files with no remote EPRT support
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER -P -
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
PASS ftp@example.com
PWD
CWD a
CWD path
EPRT |1|
PORT 
TYPE I
SIZE 212
RETR 212
PORT 
SIZE 212
RETR 212
QUIT
</protocol>
</verify>
</testcase>







|
|

|
|




49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
PASS ftp@example.com
PWD
CWD a
CWD path
EPRT |1|
PORT 
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
PORT 
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test213.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Content-Length: 33

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Content-Length: 33

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.213:%HTTPPORT/path/2130002 --proxy1.0 http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
CONNECT test.remote.example.com.213:%HTTPPORT HTTP/1.0
Host: test.remote.example.com.213:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.213:%HTTPPORT HTTP/1.0
Host: test.remote.example.com.213:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

POST /path/2130002 HTTP/1.1
Host: test.remote.example.com.213:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

postit
</protocol>
</verify>
</testcase>







|









|
|




|
|




|
|









88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy1.0 http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.0
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.0
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

POST /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

postit
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test214.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP URL with escaped { and }
 </name>
<command>
"http://%HOSTIP:%HTTPPORT/\{\}\/214"
</command>
<setenv>
# Needed for MSYS2 to not convert all backslashes to forward slashes
MSYS2_ARG_CONV_EXCL=http://
</setenv>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /{}\/214 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>












|


















|











|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP URL with escaped { and }
 </name>
<command>
"http://%HOSTIP:%HTTPPORT/\{\}\/%TESTNUMBER"
</command>
<setenv>
# Needed for MSYS2 to not convert all backslashes to forward slashes
MSYS2_ARG_CONV_EXCL=http://
</setenv>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /{}\/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test215.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
 <name>
Get two FTP dir listings from the same remote dir: no second CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/215/ ftp://%HOSTIP:%FTPPORT/a/path/215/
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
CWD 215
EPSV
TYPE A
LIST
EPSV
LIST
QUIT
</protocol>







|











|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
ftp
</server>
 <name>
Get two FTP dir listings from the same remote dir: no second CWD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER/ ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER/
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
CWD %TESTNUMBER
EPSV
TYPE A
LIST
EPSV
LIST
QUIT
</protocol>
Changes to jni/curl/tests/data/test216.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP upload two files to the same dir
 </name>
 <command>
-T log/upload.216 ftp://%HOSTIP:%FTPPORT/a/path/216/ -T log/upload.216 ftp://%HOSTIP:%FTPPORT/a/path/216/%2e%2eanotherup.216
</command>
<file name="log/upload.216">
upload this file twice
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
CWD 216
EPSV
TYPE I
STOR upload.216
EPSV
STOR ..anotherup.216
QUIT
</protocol>
</verify>
</testcase>







|

|












|


|

|




14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP upload two files to the same dir
 </name>
 <command>
-T log/upload.%TESTNUMBER ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER/ -T log/upload.%TESTNUMBER ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER/%2e%2eanotherup.%TESTNUMBER
</command>
<file name="log/upload.%TESTNUMBER">
upload this file twice
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD a
CWD path
CWD %TESTNUMBER
EPSV
TYPE I
STOR upload.%TESTNUMBER
EPSV
STOR ..anotherup.%TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test217.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP proxy CONNECT to proxy returning 405
 </name>
 <command>
http://test.remote.example.com.217:%HTTPPORT/path/2170002 --proxy http://%HOSTIP:%HTTPPORT --proxytunnel -w "%{http_code} %{http_connect}\n"
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.217:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.217:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
# CURLE_RECV_ERROR
<errorcode>
56







|









|
|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP proxy CONNECT to proxy returning 405
 </name>
 <command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxytunnel -w "%{http_code} %{http_connect}\n"
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
# CURLE_RECV_ERROR
<errorcode>
56
Changes to jni/curl/tests/data/test218.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP PUT from a file but enforce chunked transfer-encoding
 </name>
 <command>
 -T log/file218 -H "Transfer-Encoding: chunked" http://%HOSTIP:%HTTPPORT/218
</command>
<file name="log/file218">
just some tiny teeny contents
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /218 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

1e







|

|








|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP PUT from a file but enforce chunked transfer-encoding
 </name>
 <command>
 -T log/file%TESTNUMBER -H "Transfer-Encoding: chunked" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<file name="log/file%TESTNUMBER">
just some tiny teeny contents
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

1e
Changes to jni/curl/tests/data/test219.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
http
proxy
</features>
 <name>
try using proxy with unsupported scheme
 </name>
 <command>
-x foo://%HOSTIP:%NOLISTENPORT/219 http://%HOSTIP:%NOLISTENPORT/219
</command>
</client>

#
# Verify after the test has been "shot"
<verify>
<errorcode>







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
http
proxy
</features>
 <name>
try using proxy with unsupported scheme
 </name>
 <command>
-x foo://%HOSTIP:%NOLISTENPORT/%TESTNUMBER http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER
</command>
</client>

#
# Verify after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test22.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
get HTTP with URL > 10000 bytes
 </name>
 <command>
%HOSTIP:%HTTPPORT/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
get HTTP with URL > 10000 bytes
 </name>
 <command>
%HOSTIP:%HTTPPORT/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test220.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57



58

59
60
61
62
63
64

65



66
67
68
69
<server>
http
</server>
 <name>
HTTP GET gzip compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/220 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>



s/^Accept-Encoding: .*/Accept-Encoding: xxx/

</strippart>
<protocol>
GET /220 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

Accept-Encoding: xxx




</protocol>
</verify>
</testcase>







|







>
>
>

>


|



>

>
>
>




43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<server>
http
</server>
 <name>
HTTP GET gzip compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
%if hyper
s/^Accept-Encoding: .*/Accept-Encoding: xxx /
%else
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
%endif
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
%if hyper
Accept-Encoding: xxx
%else
Accept-Encoding: xxx
%endif

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test221.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<server>
http
</server>
 <name>
HTTP GET gzip compressed content with broken gzip header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/221 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /221 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
<errorcode>







|










|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<server>
http
</server>
 <name>
HTTP GET gzip compressed content with broken gzip header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
<errorcode>
Changes to jni/curl/tests/data/test222.
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<server>
http
</server>
 <name>
HTTP GET deflate compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/222 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /222 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>







|










|







174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<server>
http
</server>
 <name>
HTTP GET deflate compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>
Changes to jni/curl/tests/data/test223.
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<server>
http
</server>
 <name>
HTTP GET deflate compressed content with broken deflate header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/223 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /223 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
<errorcode>







|










|







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<server>
http
</server>
 <name>
HTTP GET deflate compressed content with broken deflate header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
<errorcode>
Changes to jni/curl/tests/data/test224.
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<server>
http
</server>
 <name>
HTTP GET gzip compressed content with huge comment and extra field
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/224 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /224 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>







|










|







79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<server>
http
</server>
 <name>
HTTP GET gzip compressed content with huge comment and extra field
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>
Changes to jni/curl/tests/data/test225.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<server>
ftp
</server>
 <name>
FTP %0a-code in URL's name part
 </name>
 <command>
ftp://bad%0auser:passwd@%HOSTIP:%FTPPORT/225%0a
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<server>
ftp
</server>
 <name>
FTP %0a-code in URL's name part
 </name>
 <command>
ftp://bad%0auser:passwd@%HOSTIP:%FTPPORT/%TESTNUMBER%0a
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>
Changes to jni/curl/tests/data/test226.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
ftp
</server>
 <name>
FTP %0d-code in URL's CWD part
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/226%0d
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
ftp
</server>
 <name>
FTP %0d-code in URL's CWD part
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER%0d
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>
Changes to jni/curl/tests/data/test227.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP with quote ops
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
NOOP 1
FAIL
EPSV
PASV
TYPE I
NOOP 2
FAIL HARD
SIZE 227
RETR 227
NOOP 3
QUIT
</protocol>
</verify>
</testcase>







|
















|
|





27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
ftp
</server>
 <name>
FTP with quote ops
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
NOOP 1
FAIL
EPSV
PASV
TYPE I
NOOP 2
FAIL HARD
SIZE %TESTNUMBER
RETR %TESTNUMBER
NOOP 3
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test228.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP RETR with ACCT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/228 --ftp-account "one count"
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
ACCT one count
PWD
EPSV
TYPE I
SIZE 228
RETR 228
QUIT
</protocol>
</verify>
</testcase>







|













|
|




26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
ftp
</server>
 <name>
FTP RETR with ACCT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --ftp-account "one count"
</command>
</client>


# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
ACCT one count
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test229.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP RETR with bad ACCT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/229 --ftp-account "one count"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
ftp
</server>
 <name>
FTP RETR with bad ACCT
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --ftp-account "one count"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
Changes to jni/curl/tests/data/test230.
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<server>
http
</server>
 <name>
HTTP GET multiply compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/230 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /230 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>







|










|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<server>
http
</server>
 <name>
HTTP GET multiply compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>
Changes to jni/curl/tests/data/test231.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
file
</server>
 <name>
file:// with resume
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test231.txt -C 10
</command>
<file name="log/test231.txt">
A01234567
B01234567
C01234567
</file>
</client>

# Verify data after the test has been "shot"







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
file
</server>
 <name>
file:// with resume
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test%TESTNUMBER.txt -C 10
</command>
<file name="log/test%TESTNUMBER.txt">
A01234567
B01234567
C01234567
</file>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test232.
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<server>
http
</server>
 <name>
HTTP GET deflate raw-compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/232 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /232 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>







|










|







174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<server>
http
</server>
 <name>
HTTP GET deflate raw-compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>
Changes to jni/curl/tests/data/test233.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/2330002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/2330002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/233 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/233 HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/2330002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|



|







|










|



|




|



















|










|







|









9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/%TESTNUMBER0002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test234.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/2340002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/2340002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/234 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location-trusted
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/234 HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/2340002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|



|







|










|



|




|



















|










|







|










11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location-trusted
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://goto.second.host.now/%TESTNUMBER0002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test235.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP resumed upload but no file present remotely
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/235 -T log/upload235 -C -
</command>
<file name="log/upload235">
this is the *****crap******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 235
STOR 235
QUIT
</protocol>
<upload>
this is the *****crap******** that we're gonna upload

worx?
</upload>
</verify>
</testcase>







|

|














|
|









17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP resumed upload but no file present remotely
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -C -
</command>
<file name="log/upload%TESTNUMBER">
this is the *****crap******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
this is the *****crap******** that we're gonna upload

worx?
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test236.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP resume upload but denied access to remote file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/236 -T log/file236.txt -C -
</command>
<file name="log/file236.txt">
Test data
</file>
</client>

# Verify data after the test has been "shot"
<verify>

<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 236
STOR 236
QUIT
</protocol>

#  (25) Failed FTP upload: 550
<errorcode>
25
</errorcode>







|

|













|
|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
ftp
</server>
 <name>
FTP resume upload but denied access to remote file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/file%TESTNUMBER.txt -C -
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
</file>
</client>

# Verify data after the test has been "shot"
<verify>

<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
STOR %TESTNUMBER
QUIT
</protocol>

#  (25) Failed FTP upload: 550
<errorcode>
25
</errorcode>
Changes to jni/curl/tests/data/test237.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP getting bad host in 227-response to PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/237 --disable-epsv
</command>
</client>

# Verify data after the test has been "shot"
# The bogus address used here is chosen specifically so that when processed on
# certain hosts with buggy resolver code, the resulting address (192.0.2.127)
# is from an address block that is guaranteed never to be assigned (RFC3330).







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP getting bad host in 227-response to PASV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --disable-epsv
</command>
</client>

# Verify data after the test has been "shot"
# The bogus address used here is chosen specifically so that when processed on
# certain hosts with buggy resolver code, the resulting address (192.0.2.127)
# is from an address block that is guaranteed never to be assigned (RFC3330).
Changes to jni/curl/tests/data/test238.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP getting bad port in response to EPSV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/238
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 13 = CURLE_FTP_WEIRD_PASV_REPLY
<errorcode>







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
ftp
</server>
 <name>
FTP getting bad port in response to EPSV
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# 13 = CURLE_FTP_WEIRD_PASV_REPLY
<errorcode>
Changes to jni/curl/tests/data/test239.
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/239 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded







|









|








|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded
Changes to jni/curl/tests/data/test24.
1
2
3
4
5

6
7
8
9
10
11
12
<testcase>
<info>
<keywords>
HTTP
HTTP GET

</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.0 404 BAD BOY
Content-Type: text/html





>







1
2
3
4
5
6
7
8
9
10
11
12
13
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--fail
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.0 404 BAD BOY
Content-Type: text/html
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
HTTP GET fail silently on HTTP error return
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/24 --fail --silent --show-error
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /24 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
22
</errorcode>
<file2 name="log/stderr24" mode="text">
curl: (22) The requested URL returned error: 404
</file2>
</verify>
</testcase>







|






|








|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
http
</server>
 <name>
HTTP GET fail silently on HTTP error return
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --fail --silent --show-error
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
22
</errorcode>
<file2 name="log/stderr%TESTNUMBER" mode="text">
curl: (22) The requested URL returned error: 404
</file2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test240.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
IPv6
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
IPv6
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/240"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /240 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/%TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test241.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6

hello
</data>
</reply>

#
# Client-side
<client>
<features>
ipv6
</features>
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET (using ip6-localhost)
 </name>
 <command>
-g "http://ip6-localhost:%HTTP6PORT/241"
</command>
<precheck>
./server/resolve --ipv6 ip6-localhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /241 HTTP/1.1
Host: ip6-localhost:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|




















|










|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6

hello
</data>
</reply>

#
# Client-side
<client>
<features>
ipv6
</features>
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET (using ip6-localhost)
 </name>
 <command>
-g "http://ip6-localhost:%HTTP6PORT/%TESTNUMBER"
</command>
<precheck>
./server/resolve --ipv6 ip6-localhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: ip6-localhost:%HTTP6PORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test242.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

hello
</data>
</reply>

#
# Client-side
<client>
<features>
ipv6
</features>
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with username+password in URL
 </name>
 <command>
-g "http://foobar:barfoo@%HOST6IP:%HTTP6PORT/242"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /242 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
Authorization: Basic Zm9vYmFyOmJhcmZvbw==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|




















|







|








8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close

hello
</data>
</reply>

#
# Client-side
<client>
<features>
ipv6
</features>
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with username+password in URL
 </name>
 <command>
-g "http://foobar:barfoo@%HOST6IP:%HTTP6PORT/%TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
Authorization: Basic Zm9vYmFyOmJhcmZvbw==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test243.
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/243 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

postitPOST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded







|









|







|








|







84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

postitPOST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded
Changes to jni/curl/tests/data/test244.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP dir listing with nocwd and URL encoded path
 </name>
 <command>
--ftp-method nocwd ftp://%HOSTIP:%FTPPORT/fir%23t/th%69rd/244/
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST fir#t/third/244
QUIT
</protocol>
</verify>
</testcase>







|











|




31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
ftp
</server>
 <name>
FTP dir listing with nocwd and URL encoded path
 </name>
 <command>
--ftp-method nocwd ftp://%HOSTIP:%FTPPORT/fir%23t/th%69rd/%TESTNUMBER/
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST fir#t/third/%TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test245.
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
!SSPI
crypto
</features>
 <name>
HTTP POST --digest
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/245 -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /245 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /245 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/245", response="379a439b1737ba257c1d2f103914b18b"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>







|






|






|

|







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
!SSPI
crypto
</features>
 <name>
HTTP POST --digest
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="379a439b1737ba257c1d2f103914b18b"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>
Changes to jni/curl/tests/data/test246.
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
!SSPI
crypto
</features>
 <name>
HTTP POST --digest with server doing a 100 before 401 response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/246 -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /246 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /246 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/246", response="761e6fc9a760c39d587092e8d840e740"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>







|






|






|

|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
!SSPI
crypto
</features>
 <name>
HTTP POST --digest with server doing a 100 before 401 response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u auser:apasswd --digest -d "junkelijunk"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="761e6fc9a760c39d587092e8d840e740"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

junkelijunk
</protocol>
Changes to jni/curl/tests/data/test247.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<client>
<server>
ftp
</server>
 <name>
FTP upload time condition evaluates TRUE => skip upload
 </name>
<file name="log/test247.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/247 -T log/test247.txt -z "apr 1 2005 08:00:00"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM 247
QUIT
</protocol>
</verify>
</testcase>







|








|











|




15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<client>
<server>
ftp
</server>
 <name>
FTP upload time condition evaluates TRUE => skip upload
 </name>
<file name="log/test%TESTNUMBER.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt -z "apr 1 2005 08:00:00"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test248.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<client>
<server>
ftp
</server>
 <name>
FTP upload time condition evaluates FALSE => upload anyway
 </name>
<file name="log/test248.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/248 -T log/test248.txt -z "apr 1 2005 08:00:00"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
    to
      see
that FTP
works
  so does it?
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM 248
EPSV
TYPE I
STOR 248
QUIT
</protocol>
</verify>
</testcase>







|








|

















|


|




15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<client>
<server>
ftp
</server>
 <name>
FTP upload time condition evaluates FALSE => upload anyway
 </name>
<file name="log/test%TESTNUMBER.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt -z "apr 1 2005 08:00:00"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
    to
      see
that FTP
works
  so does it?
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM %TESTNUMBER
EPSV
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test249.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 304 Not Modified swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1910 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 677777
Connection: close
Content-Type: text/html












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 304 Not Modified swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 1910 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 677777
Connection: close
Content-Type: text/html
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP 304 response with "illegal" Content-Length: header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/249 -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /249 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>







|







|








28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP 304 response with "illegal" Content-Length: header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test25.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24












25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77










78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/25
Content-Length: 32
Connection: close

Redirect to the same URL again!
</data>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/25












Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/25
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/25
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/25
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/25
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/25
Content-Length: 32
Connection: close

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
looping HTTP Location: following with --max-redirs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/25 -L --max-redirs 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/25 HTTP/1.1










Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/25 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/data/reply/25 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/data/reply/data/reply/25 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<errorcode>
47
</errorcode>
</verify>
</testcase>







|








|
>
>
>
>
>
>
>
>
>
>
>
>





|





|





|
<
<
<
<
<
<
<
<
<
<
<
<















|






|
>
>
>
>
>
>
>
>
>
>




|




|




<
<
<
<
<
|
<
<
<
<
<











8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54












55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101





102





103
104
105
106
107
108
109
110
111
112
113
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/%TESTNUMBER
Content-Length: 32
Connection: close

Redirect to the same URL again!
</data>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/%TESTNUMBER
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/%TESTNUMBER
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/%TESTNUMBER
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/%TESTNUMBER
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/%TESTNUMBER
Content-Length: 32
Connection: close

HTTP/1.1 301 This is a weirdo text message
Server: test-server/fake
Location: data/reply/%TESTNUMBER












Content-Length: 32
Connection: close

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
looping HTTP Location: following with --max-redirs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L --max-redirs 5
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/data/reply/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/data/reply/data/reply/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data/reply/data/reply/data/reply/data/reply/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*






GET /want/data/reply/data/reply/data/reply/data/reply/data/reply/%TESTNUMBER HTTP/1.1





Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<errorcode>
47
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test256.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP resume request over proxy with auth without server supporting it
 </name>
 <command option="no-output">
-x http://%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/want/256 -C - --no-include -o log/fewl256.txt -U daniel:stenberg
</command>
<file name="log/fewl256.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/256 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic ZGFuaWVsOnN0ZW5iZXJn
Range: bytes=78-
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

# the download target file must remain untouched
<file name="log/fewl256.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
</verify>
</testcase>







|

|














|










|





25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP resume request over proxy with auth without server supporting it
 </name>
 <command option="no-output">
-x http://%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -C - --no-include -o log/fewl%TESTNUMBER.txt -U daniel:stenberg
</command>
<file name="log/fewl%TESTNUMBER.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic ZGFuaWVsOnN0ZW5iZXJn
Range: bytes=78-
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>

# the download target file must remain untouched
<file name="log/fewl%TESTNUMBER.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test257.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://anotherone.com/2570002
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 302 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://athird.com/2570003

If this is received, the location following worked

</data2>
<data3>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://anotherone.com/2570002
Connection: close

HTTP/1.1 302 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://athird.com/2570003

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with --netrc-optional
 </name>
 <command>
http://supersite.com/want/257 -L -x http://%HOSTIP:%HTTPPORT --netrc-optional --netrc-file log/netrc257
</command>
<features>
proxy
</features>
# netrc auth for two out of three sites:
<file name="log/netrc257">
machine supersite.com login user1 password passwd1
machine anotherone.com login user2 password passwd2
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://supersite.com/want/257 HTTP/1.1
Host: supersite.com
Authorization: Basic dXNlcjE6cGFzc3dkMQ==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://anotherone.com/2570002 HTTP/1.1
Host: anotherone.com
Authorization: Basic dXNlcjI6cGFzc3dkMg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://athird.com/2570003 HTTP/1.1
Host: athird.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|

|







|

|






|








|

|



|

|


|

















|





|








|






|






|








10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://anotherone.com/%TESTNUMBER0002
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 302 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://athird.com/%TESTNUMBER0003

If this is received, the location following worked

</data2>
<data3>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://anotherone.com/%TESTNUMBER0002
Connection: close

HTTP/1.1 302 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: http://athird.com/%TESTNUMBER0003

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with --netrc-optional
 </name>
 <command>
http://supersite.com/want/%TESTNUMBER -L -x http://%HOSTIP:%HTTPPORT --netrc-optional --netrc-file log/netrc%TESTNUMBER
</command>
<features>
proxy
</features>
# netrc auth for two out of three sites:
<file name="log/netrc%TESTNUMBER">
machine supersite.com login user1 password passwd1
machine anotherone.com login user2 password passwd2
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://supersite.com/want/%TESTNUMBER HTTP/1.1
Host: supersite.com
Authorization: Basic dXNlcjE6cGFzc3dkMQ==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://anotherone.com/%TESTNUMBER0002 HTTP/1.1
Host: anotherone.com
Authorization: Basic dXNlcjI6cGFzc3dkMg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://athird.com/%TESTNUMBER0003 HTTP/1.1
Host: athird.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test258.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Server-side
<reply>
# The stupid test server doesn't response anything at all until the full
# request has been sent, and then of course the full POST has already been
# sent!
<data>
HTTP/1.1 407 no, tell me who you are first swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Proxy-Connection: close
Content-Length: 0

</data>
<data1000>
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3

ok
</data1000>
<datacheck>
HTTP/1.1 407 no, tell me who you are first swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Proxy-Connection: close
Content-Length: 0

HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0







|
















|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Server-side
<reply>
# The stupid test server doesn't response anything at all until the full
# request has been sent, and then of course the full POST has already been
# sent!
<data>
HTTP/1.1 407 no, tell me who you are first swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Proxy-Connection: close
Content-Length: 0

</data>
<data1000>
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3

ok
</data1000>
<datacheck>
HTTP/1.1 407 no, tell me who you are first swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Proxy-Connection: close
Content-Length: 0

HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
crypto
proxy
</features>
 <name>
HTTP POST multipart without Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth
</command>
# We create this file before the command is invoked!
<file name="log/test258.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST http://remotehost:54321/we/want/258 HTTP/1.1
Host: remotehost:54321
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test258.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
POST http://remotehost:54321/we/want/258 HTTP/1.1
Host: remotehost:54321
Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/258", response="2501654ca391f0b5c8c12a1da77e34cd"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test258.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
</protocol>
</verify>
</testcase>







|


|












|
















|







|

|















|










60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
crypto
proxy
</features>
 <name>
HTTP POST multipart without Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/%TESTNUMBER -F name=daniel -F tool=curl -F file=@log/test%TESTNUMBER.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST http://remotehost:54321/we/want/%TESTNUMBER HTTP/1.1
Host: remotehost:54321
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
POST http://remotehost:54321/we/want/%TESTNUMBER HTTP/1.1
Host: remotehost:54321
Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/%TESTNUMBER", response="2501654ca391f0b5c8c12a1da77e34cd"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test259.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Server-side
<reply>
# The stupid test server doesn't response anything at all until the full
# request has been sent, and then of course the full POST has already been
# sent!
<data>
HTTP/1.1 407 no, tell me who you are first
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Content-Length: 0

</data>
<data1000>
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3

ok
</data1000>
<datacheck>
HTTP/1.1 407 no, tell me who you are first
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Content-Length: 0

HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1







|















|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Server-side
<reply>
# The stupid test server doesn't response anything at all until the full
# request has been sent, and then of course the full POST has already been
# sent!
<data>
HTTP/1.1 407 no, tell me who you are first
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Content-Length: 0

</data>
<data1000>
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3

ok
</data1000>
<datacheck>
HTTP/1.1 407 no, tell me who you are first
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Proxy-Authenticate: Digest realm="many secrets", nonce="911"
Content-Length: 0

HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
crypto
proxy
</features>
 <name>
HTTP POST multipart with Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue"
</command>
# We create this file before the command is invoked!
<file name="log/test259.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST http://remotehost:54321/we/want/259 HTTP/1.1
Host: remotehost:54321
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Expect: 100-continue
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test259.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
POST http://remotehost:54321/we/want/259 HTTP/1.1
Host: remotehost:54321
Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/259", response="b479994d13e60f3aa192a67c5892ddc5"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Expect: 100-continue
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test259.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
</protocol>
</verify>
</testcase>







|


|












|

















|







|

|
















|










56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
crypto
proxy
</features>
 <name>
HTTP POST multipart with Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/%TESTNUMBER -F name=daniel -F tool=curl -F file=@log/test%TESTNUMBER.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue"
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST http://remotehost:54321/we/want/%TESTNUMBER HTTP/1.1
Host: remotehost:54321
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Expect: 100-continue
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
POST http://remotehost:54321/we/want/%TESTNUMBER HTTP/1.1
Host: remotehost:54321
Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/%TESTNUMBER", response="b479994d13e60f3aa192a67c5892ddc5"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Expect: 100-continue
Content-Length: 409
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test26.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
http
</server>
 <name>
specify more -o than URLs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/26 -o - -o -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/26 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
http
</server>
 <name>
specify more -o than URLs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -o - -o -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test260.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP GET URL without slash but with questionmark
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT?260"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?260 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP GET URL without slash but with questionmark
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT?%TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test261.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP RETR with 226 response code to TYPE
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/261
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 261
RETR 261
QUIT
</protocol>
</verify>
</testcase>







|












|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP RETR with 226 response code to TYPE
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test262.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test263.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Content-Type: text/html

hello
</data>
</reply>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Content-Type: text/html

hello
</data>
</reply>

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with proxy specified using IPv6-numerical address
 </name>
 <command>
-g -x "http://%HOST6IP:%HTTP6PORT" http://veryveryremotesite.com/263
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://veryveryremotesite.com/263 HTTP/1.1
Host: veryveryremotesite.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|







|








30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with proxy specified using IPv6-numerical address
 </name>
 <command>
-g -x "http://%HOST6IP:%HTTP6PORT" http://veryveryremotesite.com/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://veryveryremotesite.com/%TESTNUMBER HTTP/1.1
Host: veryveryremotesite.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test264.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
HTTP proxy Basic auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 26

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy string including http:// and user+password
 </name>
 <command>
http://we.want.that.site.com/264 -x http://f%61ke:user@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/264 HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>













|
















|









|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
HTTP proxy Basic auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 26

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy string including http:// and user+password
 </name>
 <command>
http://we.want.that.site.com/%TESTNUMBER -x http://f%61ke:user@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/%TESTNUMBER HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test265.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Content-Type: text/html; charset=iso-8859-1

</connect1002>

# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</data2>
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Content-Length: 1033

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>







|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Content-Length: 1033

HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes

daniel
</datacheck>
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.265:%HTTPPORT/path/2650002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
CONNECT test.remote.example.com.265:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.265:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.265:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.265:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

POST /path/2650002 HTTP/1.1
Host: test.remote.example.com.265:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

postit
</protocol>
</verify>
</testcase>







|









|
|




|
|




|
|









89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

POST /path/%TESTNUMBER0002 HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

postit
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test266.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding and chunked trailer
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/266 -D log/heads266
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /266 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads266">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Trailer: chunky-trailer
Connection: mooo

chunky-trailer: header data







|







|





|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding and chunked trailer
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -D log/heads%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads%TESTNUMBER">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Trailer: chunky-trailer
Connection: mooo

chunky-trailer: header data
Changes to jni/curl/tests/data/test267.
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /267 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Header1: yes
Header2: no
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /267 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Header1: yes
Header2: no
Content-Length: 4







|









|









|







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no"
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Header1: yes
Header2: no
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Header1: yes
Header2: no
Content-Length: 4
Changes to jni/curl/tests/data/test268.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP POST a non-existing file
 </name>
 <command>
 -d @nonesuchfile http://%HOSTIP:%HTTPPORT/268
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /268 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

</protocol>







|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP POST a non-existing file
 </name>
 <command>
 -d @nonesuchfile http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

</protocol>
Changes to jni/curl/tests/data/test269.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 677654
Connection: close
Content-Type: text/html
Funny-head: yesyes














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 677654
Connection: close
Content-Type: text/html
Funny-head: yesyes

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP --ignore-content-length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/269 --ignore-content-length
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /269 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP --ignore-content-length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --ignore-content-length
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test27.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
Get same cookie page several times
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT/want/{27,27,27}" -b none
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/27 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/27 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: thewinneris=nowayyouwin

GET /want/27 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: thewinneris=nowayyouwin

</protocol>
</verify>







|






|




|





|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
Get same cookie page several times
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT/want/{%TESTNUMBER,%TESTNUMBER,%TESTNUMBER}" -b none
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: thewinneris=nowayyouwin

GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: thewinneris=nowayyouwin

</protocol>
</verify>
Changes to jni/curl/tests/data/test270.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP RETR PASV --ftp-skip-pasv-ip
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/270 --ftp-skip-pasv-ip --disable-epsv
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
PASV
TYPE I
SIZE 270
RETR 270
QUIT
</protocol>
</verify>
</testcase>







|











|
|




26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP RETR PASV --ftp-skip-pasv-ip
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --ftp-skip-pasv-ip --disable-epsv
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
PASV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test271.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
tftp
</server>
 <name>
TFTP retrieve
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//271
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /271
</protocol>
</verify>
</testcase>







|












|



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
tftp
</server>
 <name>
TFTP retrieve
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test272.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
ftp
</server>
 <name>
FTP timed conditioned get file with identical time stamp 
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/272 -z "2004 jan 1 12:12:12 UTC"
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM 272
QUIT
</protocol>
</verify>
</testcase>







|










|




18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
ftp
</server>
 <name>
FTP timed conditioned get file with identical time stamp 
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -z "2004 jan 1 12:12:12 UTC"
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test273.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with two Digest authorization headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/273 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /273 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /273 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/273", response="576ae57b1db0039f8c0de43ef58e49e3"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with two Digest authorization headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="576ae57b1db0039f8c0de43ef58e49e3"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test274.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP Location: following with --max-redirs 0
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/274 -L --max-redirs 0
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/274 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<errorcode>







|






|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
http
</server>
 <name>
HTTP Location: following with --max-redirs 0
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L --max-redirs 0
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<errorcode>
Changes to jni/curl/tests/data/test275.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
HTTP/1.1 200 OK
Connected-fine: sure

</connect>

<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 9

contents
</data>
<datacheck>
HTTP/1.1 200 OK
Connected-fine: sure

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP CONNECT with proxytunnel getting two URLs from the same host
 </name>
 <command>
http://remotesite.com.275:%HTTPPORT/we/want/that/page/275 -p -x %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:%HTTPPORT/we/want/that/page/275
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT remotesite.com.275:%HTTPPORT HTTP/1.1
Host: remotesite.com.275:%HTTPPORT
Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/275 HTTP/1.1
Host: remotesite.com.275:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/that/page/275 HTTP/1.1
Host: remotesite.com.275:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|











|



















|










|
|






|
|




|
|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
HTTP/1.1 200 OK
Connected-fine: sure

</connect>

<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 9

contents
</data>
<datacheck>
HTTP/1.1 200 OK
Connected-fine: sure

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP CONNECT with proxytunnel getting two URLs from the same host
 </name>
 <command>
http://remotesite.com.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER -p -x %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself http://remotesite.com.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT remotesite.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: remotesite.com.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: remotesite.com.%TESTNUMBER:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: remotesite.com.%TESTNUMBER:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test276.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with multiple question marks in URLs
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT/want?uri=http://anything/276?secondq/276" -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want?uri=http://anything/276?secondq/276 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|

|







|








|

|



|

















|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=http://anotherurl/?a_second/%TESTNUMBER0002
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=http://anotherurl/?a_second/%TESTNUMBER0002
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with multiple question marks in URLs
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT/want?uri=http://anything/%TESTNUMBER?secondq/%TESTNUMBER" -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want?uri=http://anything/%TESTNUMBER?secondq/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /data/%TESTNUMBER0002.txt?coolsite=http://anotherurl/?a_second/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test277.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with custom Content-Type
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/277 -F name=daniel -H "Content-Type: text/info"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/--------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=------------------------/
</strippart>
<protocol>
POST /want/277 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 146
Content-Type: text/info; boundary=------------------------

--------------------------











|

















|










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with custom Content-Type
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -F name=daniel -H "Content-Type: text/info"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/--------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=------------------------/
</strippart>
<protocol>
POST /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 146
Content-Type: text/info; boundary=------------------------

--------------------------
Changes to jni/curl/tests/data/test278.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
HTTP proxy Basic auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 27

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy string including http:// and user+empty password
 </name>
 <command>
http://we.want.that.site.com/278 -x http://f%61ke:@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/278 HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTo=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>













|
















|









|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
HTTP proxy Basic auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 27

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy string including http:// and user+empty password
 </name>
 <command>
http://we.want.that.site.com/%TESTNUMBER -x http://f%61ke:@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/%TESTNUMBER HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTo=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test279.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 27

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy string including http:// and user only
 </name>
 <command>
http://we.want.that.site.com/279 -x http://f%61ke@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/279 HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTo=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|
















|









|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 27

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy string including http:// and user only
 </name>
 <command>
http://we.want.that.site.com/%TESTNUMBER -x http://f%61ke@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/%TESTNUMBER HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTo=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test28.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location:  /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
%if hyper
Location: /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE
%else
Location:  /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE
%endif
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with extra spaces in header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/28 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/28 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>











|

|







|








|


|

|




|

















|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location:  /online/1,1795,Welcome,00.html/%TESTNUMBER0002.txt?logout=TRUE
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
%if hyper
Location: /online/1,1795,Welcome,00.html/%TESTNUMBER0002.txt?logout=TRUE
%else
Location:  /online/1,1795,Welcome,00.html/%TESTNUMBER0002.txt?logout=TRUE
%endif
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following with extra spaces in header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /online/1,1795,Welcome,00.html/%TESTNUMBER0002.txt?logout=TRUE HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test280.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
ftp
</server>
 <name>
FTP --ftp-alternative-to-user on USER failure
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/280/ --ftp-alternative-to-user "USER replacement"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
USER replacement
PASS ftp@example.com
PWD
CWD 280
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>







|











|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
ftp
</server>
 <name>
FTP --ftp-alternative-to-user on USER failure
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/ --ftp-alternative-to-user "USER replacement"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
USER replacement
PASS ftp@example.com
PWD
CWD %TESTNUMBER
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test281.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 100 Continue

HTTP/1.1 401 Bad Auth swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
WWW-Authenticate: Basic Realm=authenticate
Server: test-server/fake

</data>

</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT from file with 100 + 401 responses and -f without auth given
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/281 -f -T log/test281.txt
</command>
<file name="log/test281.txt">
Weird
     file
         to
   upload
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
22
</errorcode>
<protocol>
PUT /we/want/281 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 38
Expect: 100-continue

Weird
     file
         to
   upload
</protocol>
</verify>
</testcase>













|
















|

|













|













1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 100 Continue

HTTP/1.1 401 Bad Auth swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
WWW-Authenticate: Basic Realm=authenticate
Server: test-server/fake

</data>

</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT from file with 100 + 401 responses and -f without auth given
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -f -T log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
22
</errorcode>
<protocol>
PUT /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 38
Expect: 100-continue

Weird
     file
         to
   upload
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test282.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
HTTP GET with no response body or headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/282
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /282 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
HTTP GET with no response body or headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test284.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<server>
tftp
</server>
 <name>
TFTP retrieve of boundary case 512 byte file
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//284
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /284
</protocol>
</verify>
</testcase>







|












|



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<server>
tftp
</server>
 <name>
TFTP retrieve of boundary case 512 byte file
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 512
timeout: 6
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test285.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
tftp
</server>
 <name>
TFTP send
 </name>
 <command>
-T log/test285.txt tftp://%HOSTIP:%TFTPPORT//
</command>
<file name="log/test285.txt">
a chunk of
data
sent
 to server
</file>
</client>








|

|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
tftp
</server>
 <name>
TFTP send
 </name>
 <command>
-T log/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//
</command>
<file name="log/test%TESTNUMBER.txt">
a chunk of
data
sent
 to server
</file>
</client>

37
38
39
40
41
42
43
44
45
46
47
</upload>
<protocol>
opcode: 2
mode: octet
tsize: 32
blksize: 512
timeout: 6
filename: /test285.txt
</protocol>
</verify>
</testcase>







|



37
38
39
40
41
42
43
44
45
46
47
</upload>
<protocol>
opcode: 2
mode: octet
tsize: 32
blksize: 512
timeout: 6
filename: /test%TESTNUMBER.txt
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test286.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
tftp
</server>
 <name>
TFTP send of boundary case 512 byte file
 </name>
 <command>
-T log/test286.txt tftp://%HOSTIP:%TFTPPORT//
</command>
<file name="log/test286.txt">
A chunk of data which exactly fits into
a 512 byte TFTP block, testing a boundary
condition in the TFTP transmit code.
89ABCDEF
123456789ABCDEF
123456789ABCDEF
123456789ABCDEF







|

|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
tftp
</server>
 <name>
TFTP send of boundary case 512 byte file
 </name>
 <command>
-T log/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//
</command>
<file name="log/test%TESTNUMBER.txt">
A chunk of data which exactly fits into
a 512 byte TFTP block, testing a boundary
condition in the TFTP transmit code.
89ABCDEF
123456789ABCDEF
123456789ABCDEF
123456789ABCDEF
85
86
87
88
89
90
91
92
93
94
95
</upload>
<protocol>
opcode: 2
mode: octet
tsize: 512
blksize: 512
timeout: 6
filename: /test286.txt
</protocol>
</verify>
</testcase>







|



85
86
87
88
89
90
91
92
93
94
95
</upload>
<protocol>
opcode: 2
mode: octet
tsize: 512
blksize: 512
timeout: 6
filename: /test%TESTNUMBER.txt
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test287.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
 <name>
HTTP proxy CONNECT with custom User-Agent header
 </name>
 <command>
http://test.remote.example.com.287:%HTTPPORT/path/287 -H "User-Agent: looser/2015" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel --proxy-header "User-Agent: looser/2007"
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.287:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.287:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: looser/2007

</protocol>
# CURLE_RECV_ERROR
<errorcode>
56







|









|
|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
 <name>
HTTP proxy CONNECT with custom User-Agent header
 </name>
 <command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER -H "User-Agent: looser/2015" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel --proxy-header "User-Agent: looser/2007"
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
Proxy-Connection: Keep-Alive
User-Agent: looser/2007

</protocol>
# CURLE_RECV_ERROR
<errorcode>
56
Changes to jni/curl/tests/data/test288.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 <name>
file:// with (unsupported) proxy, authentication and range
 </name>
<setenv>
all_proxy=http://fake:user@%HOSTIP:%NOLISTENPORT/
</setenv>
<command option="no-include">
file://localhost%FILE_PWD/log/test288.txt
</command>
<file name="log/test288.txt">
foo
   bar
bar
   foo
moo
</file>
</client>







|

|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 <name>
file:// with (unsupported) proxy, authentication and range
 </name>
<setenv>
all_proxy=http://fake:user@%HOSTIP:%NOLISTENPORT/
</setenv>
<command option="no-include">
file://localhost%FILE_PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>
Changes to jni/curl/tests/data/test289.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
ftp
</server>
 <name>
FTP resume upload but denied access to local file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/289 -T log/illegal-nonexistent-file -C -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
26







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
ftp
</server>
 <name>
FTP resume upload but denied access to local file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/illegal-nonexistent-file -C -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
26
Changes to jni/curl/tests/data/test29.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
timeout
FAILURE
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

_data_result_data_
</data>
<postcmd>
wait 10
</postcmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with 2 secs timeout
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/29 -m 2
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/29 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>













|


















|






|










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
timeout
FAILURE
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

_data_result_data_
</data>
<postcmd>
wait 10
</postcmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with 2 secs timeout
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -m 2
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test290.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
ftp
</server>
 <name>
FTP download maximum filesize exceeded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/290 --max-filesize 30
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
63
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 290
QUIT
</protocol>
</verify>
</testcase>







|














|




17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
ftp
</server>
 <name>
FTP download maximum filesize exceeded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --max-filesize 30
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
63
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test291.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download maximum filesize not exceeded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/291 --max-filesize 100
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 291
RETR 291
QUIT
</protocol>
</verify>
</testcase>







|











|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
ftp
</server>
 <name>
FTP download maximum filesize not exceeded
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --max-filesize 100
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test292.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP GET with maximum filesize not exceeded
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/292 --max-filesize 1000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /292 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP GET with maximum filesize not exceeded
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --max-filesize 1000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test293.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP GET with maximum filesize exceeded
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/293 --max-filesize 2
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
63
</errorcode>
<protocol>
GET /293 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|










|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP GET with maximum filesize exceeded
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --max-filesize 2
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
63
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test294.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
ftp
</server>
 <name>
FTP --ftp-account on ACCT request
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/294/ --ftp-account "data for acct"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
ACCT data for acct
PWD
CWD 294
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>







|











|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
ftp
</server>
 <name>
FTP --ftp-account on ACCT request
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/ --ftp-account "data for acct"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
ACCT data for acct
PWD
CWD %TESTNUMBER
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test295.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
ftp
</server>
 <name>
FTP ACCT request without --ftp-account
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/295/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
ftp
</server>
 <name>
FTP ACCT request without --ftp-account
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test296.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP CWD with --ftp-method multicwd
 </name>
 <command>
--ftp-method multicwd ftp://%HOSTIP:%FTPPORT/first/second/third/296
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD first
CWD second
CWD third
EPSV
TYPE I
SIZE 296
RETR 296
QUIT
</protocol>
</verify>
</testcase>







|














|
|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<server>
ftp
</server>
 <name>
FTP CWD with --ftp-method multicwd
 </name>
 <command>
--ftp-method multicwd ftp://%HOSTIP:%FTPPORT/first/second/third/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD first
CWD second
CWD third
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test297.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
ftp
</server>
 <name>
FTP CWD with --ftp-method singlecwd
 </name>
 <command>
--ftp-method singlecwd ftp://%HOSTIP:%FTPPORT/first/second/third/297
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD first/second/third
EPSV
TYPE I
SIZE 297
RETR 297
QUIT
</protocol>
</verify>
</testcase>







|












|
|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
ftp
</server>
 <name>
FTP CWD with --ftp-method singlecwd
 </name>
 <command>
--ftp-method singlecwd ftp://%HOSTIP:%FTPPORT/first/second/third/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD first/second/third
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test298.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP CWD with --ftp-method nocwd
 </name>
 <command>
--ftp-method nocwd ftp://%HOSTIP:%FTPPORT/first/second/th%69rd/298
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE first/second/third/298
RETR first/second/third/298
QUIT
</protocol>
</verify>
</testcase>







|











|
|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
ftp
</server>
 <name>
FTP CWD with --ftp-method nocwd
 </name>
 <command>
--ftp-method nocwd ftp://%HOSTIP:%FTPPORT/first/second/th%69rd/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE first/second/third/%TESTNUMBER
RETR first/second/third/%TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test299.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
FTP over HTTP proxy with user:pass not in url
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT -u michal:aybabtu ftp://host.com/we/want/299
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://michal:aybabtu@host.com/we/want/299 HTTP/1.1
Host: host.com:21
Authorization: Basic bWljaGFsOmF5YmFidHU=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|




















|






|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
FTP over HTTP proxy with user:pass not in url
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT -u michal:aybabtu ftp://host.com/we/want/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://michal:aybabtu@host.com/we/want/%TESTNUMBER HTTP/1.1
Host: host.com:21
Authorization: Basic bWljaGFsOmF5YmFidHU=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP POST with auth and contents but with content-length set to 0
 </name>
 <command>
 -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://%HOSTIP:%HTTPPORT/3
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /3 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic ZmFrZTotdXNlcg==
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 37
Content-Type: application/x-www-form-urlencoded








|







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP POST with auth and contents but with content-length set to 0
 </name>
 <command>
 -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic ZmFrZTotdXNlcg==
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 37
Content-Type: application/x-www-form-urlencoded

Changes to jni/curl/tests/data/test30.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
http
</server>
 <name>
HTTP with no data in server reply
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/30
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/30 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
52







|






|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
http
</server>
 <name>
HTTP with no data in server reply
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
52
Changes to jni/curl/tests/data/test300.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTPS
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
simple HTTPS GET
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/300
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /300 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|




















|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTPS
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
simple HTTPS GET
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3000.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https Server-localhost-firstSAN-sv.pem
</server>
<name>
HTTPS GET to localhost, first subject alt name matches, CN does not match
</name>
<command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/3000
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /3000 HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|




















|











|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https Server-localhost-firstSAN-sv.pem
</server>
<name>
HTTPS GET to localhost, first subject alt name matches, CN does not match
</name>
<command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3001.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https Server-localhost-lastSAN-sv.pem
</server>
<name>
HTTPS GET to localhost, last subject alt name matches, CN does not match
</name>
<command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/3001
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /3001 HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|




















|











|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https Server-localhost-lastSAN-sv.pem
</server>
<name>
HTTPS GET to localhost, last subject alt name matches, CN does not match
</name>
<command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3002.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/3002 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 3002
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
RCPT TO:<recipient.two@example.com>
RCPT TO:<recipient.three@example.com>
RCPT TO:<recipient.four@example.com>
RCPT TO:<recipient.five@example.com>
DATA







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
RCPT TO:<recipient.two@example.com>
RCPT TO:<recipient.three@example.com>
RCPT TO:<recipient.four@example.com>
RCPT TO:<recipient.five@example.com>
DATA
Changes to jni/curl/tests/data/test3003.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/3003 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt invalid.five --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 3003
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
RCPT TO:<recipient.three@example.com>
RCPT TO:<recipient.four@example.com>
RCPT TO:<invalid.five>
DATA







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt invalid.five --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
RCPT TO:<recipient.three@example.com>
RCPT TO:<recipient.four@example.com>
RCPT TO:<invalid.five>
DATA
Changes to jni/curl/tests/data/test3004.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/3004 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 3004
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
RCPT TO:<invalid.three>
RCPT TO:<recipient.four@example.com>
RCPT TO:<recipient.five@example.com>
DATA







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
RCPT TO:<invalid.three>
RCPT TO:<recipient.four@example.com>
RCPT TO:<recipient.five@example.com>
DATA
Changes to jni/curl/tests/data/test3005.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/3005 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 3005
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
RCPT TO:<recipient.two@example.com>
RCPT TO:<invalid.three>
RCPT TO:<invalid.four>
RCPT TO:<invalid.five>
DATA







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
RCPT TO:<recipient.two@example.com>
RCPT TO:<invalid.three>
RCPT TO:<invalid.four>
RCPT TO:<invalid.five>
DATA
Changes to jni/curl/tests/data/test3006.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/3006 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt invalid.two --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 3006
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
RCPT TO:<invalid.two>
RCPT TO:<invalid.three>
RCPT TO:<invalid.four>
RCPT TO:<invalid.five>
QUIT







|











|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt invalid.two --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
RCPT TO:<invalid.two>
RCPT TO:<invalid.three>
RCPT TO:<invalid.four>
RCPT TO:<invalid.five>
QUIT
Changes to jni/curl/tests/data/test3007.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/3007 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 3007
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
QUIT
</protocol>
</verify>
</testcase>







|











|






22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<invalid.one>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3008.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
-O
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
-O
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<features>
http
</features>
<name>
--output-dir
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/3008 -O --output-dir %PWD/log
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/3008 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/3008">
-foo-
</file>
</verify>
</testcase>







|







|





|




32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<features>
http
</features>
<name>
--output-dir
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/%TESTNUMBER -O --output-dir %PWD/log
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/%TESTNUMBER">
-foo-
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3009.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
-O
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
-O
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<features>
http
</features>
<name>
--output-dir a non-existing directory
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/3009 -O --output-dir %PWD/not-there
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/3009 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
23
</errorcode>
</verify>
</testcase>







|







|










32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<features>
http
</features>
<name>
--output-dir a non-existing directory
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/%TESTNUMBER -O --output-dir %PWD/not-there
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
23
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test301.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
HTTPS GET with user and password
 </name>
 <command>
-k -u fake:user https://%HOSTIP:%HTTPSPORT/301
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /301 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<data>
[insert full protocol verifiction dump here]
</data>
</verify>
</testcase>







|




















|







|











8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
HTTPS GET with user and password
 </name>
 <command>
-k -u fake:user https://%HOSTIP:%HTTPSPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<data>
[insert full protocol verifiction dump here]
</data>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3010.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
HTTP Basic
RETRY-AFTER
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 Moved Permanently
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Retry-After: 2
Location: /30100002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0

</data2>
</reply>

# Client-side
<client>
<server>
http
</server>

<name>
HTTP retry-after reset
</name>
<tool>
lib3010
</tool>

<command>
%HOSTIP:%HTTPPORT/3010
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
Retry-After: 2
Retry-After: 0
</stdout>
</verify>
</testcase>













|




|




|

















|



|











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
HTTP Basic
RETRY-AFTER
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 301 Moved Permanently
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Retry-After: 2
Location: /%TESTNUMBER0002

</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0

</data2>
</reply>

# Client-side
<client>
<server>
http
</server>

<name>
HTTP retry-after reset
</name>
<tool>
lib%TESTNUMBER
</tool>

<command>
%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
Retry-After: 2
Retry-After: 0
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3011.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
-O
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
-O
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<features>
http
</features>
<name>
--output-dir with --create-dirs
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/3011 -O --output-dir %PWD/log/tmp --create-dirs
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/3011 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/tmp/3011">
-foo-
</file>
</verify>
</testcase>







|







|





|




32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<features>
http
</features>
<name>
--output-dir with --create-dirs
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/%TESTNUMBER -O --output-dir %PWD/log/tmp --create-dirs
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/tmp/%TESTNUMBER">
-foo-
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3012.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<testcase>
<info>
<keywords>
-O
-J
--output-dir
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Disposition: inline; filename="MMM3012MMM"
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
<name>
--output-dir with -J
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/3012 -OJ --output-dir %PWD/log
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/3012 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/MMM3012MMM">
-foo-
</file>
</verify>
</testcase>













|






|




















|







|





|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<testcase>
<info>
<keywords>
-O
-J
--output-dir
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Disposition: inline; filename="MMM%TESTNUMBERMMM"
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
<name>
--output-dir with -J
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/%TESTNUMBER -OJ --output-dir %PWD/log
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/MMM%TESTNUMBERMMM">
-foo-
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3013.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
-O
-J
--output-dir
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Disposition: inline; filename="MMM3013MMM"
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
<name>
Two --output-dir with --next in between
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/3013 -O --output-dir %PWD/log http://%HOSTIP:%HTTPPORT/another/3013 -o second3013 --output-dir %PWD/log
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/3013 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /another/3013 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/3013">
-foo-
</file>
<file2 name="log/second3013">
-foo-
</file2>
</verify>
</testcase>













|






|




















|







|




|





|


|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
-O
-J
--output-dir
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Disposition: inline; filename="MMM%TESTNUMBERMMM"
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
<name>
Two --output-dir with --next in between
</name>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/this/is/the/%TESTNUMBER -O --output-dir %PWD/log http://%HOSTIP:%HTTPPORT/another/%TESTNUMBER -o second%TESTNUMBER --output-dir %PWD/log
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /this/is/the/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /another/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/%TESTNUMBER">
-foo-
</file>
<file2 name="log/second%TESTNUMBER">
-foo-
</file2>
</verify>
</testcase>
Changes to jni/curl/tests/data/test3014.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<testcase>
<info>
<keywords>
HTTP
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
</data>

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
4
</stdout>







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</command>
</client>

# Verify data
<verify>
<stdout nonewline="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: close
Content-Type: text/plain

testdata
4
</stdout>
Changes to jni/curl/tests/data/test3015.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Sun, 13 Sep 2020 15:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./30150001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Sun, 13 Sep 2020 15:00 GMT
Transfer-Encoding: chunked







|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Sun, 13 Sep 2020 15:00 GMT
Content-Length: 8
Connection: close
Content-Type: text/plain
Location: ./%TESTNUMBER0001

monster
</data>
<data1 nocheck="yes">
HTTP/1.1 200 OK
Date: Sun, 13 Sep 2020 15:00 GMT
Transfer-Encoding: chunked
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<server>
http
</server>
 <name>
HTTP GET -w num_headers with redirected fetch (2 connects)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/3015 -w "%{num_headers}\n" -L -o/dev/null
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /3015 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /30150001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout mode="text">
4
</stdout>

</verify>
</testcase>







|







|




|












46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<server>
http
</server>
 <name>
HTTP GET -w num_headers with redirected fetch (2 connects)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w "%{num_headers}\n" -L -o/dev/null
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

<stdout mode="text">
4
</stdout>

</verify>
</testcase>
Changes to jni/curl/tests/data/test302.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
https
</server>
 <name>
HTTPS GET over HTTP proxy fails
 </name>
 <command>
-k -U fake:user -x %HOSTIP:%HTTPPORT https://bad.fakeurl-to.test:302/slash/302
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
https
</server>
 <name>
HTTPS GET over HTTP proxy fails
 </name>
 <command>
-k -U fake:user -x %HOSTIP:%HTTPPORT https://bad.fakeurl-to.test:%TESTNUMBER/slash/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test303.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTPS
HTTP GET
timeout
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

_data_result_data_
</data>
<postcmd>
wait 20
</postcmd>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTPS
HTTP GET
timeout
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

_data_result_data_
</data>
<postcmd>
wait 20
</postcmd>
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
https
</server>
 <name>
HTTPS with 8 secs timeout
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/want/303 -m 8
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/303 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>







|






|










29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
https
</server>
 <name>
HTTPS with 8 secs timeout
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/want/%TESTNUMBER -m 8
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
28
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test304.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
HTTPS
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
HTTPS multipart formpost
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/we/want/304 -F name=daniel -F tool=curl -F file=@log/test304.txt
</command>
# We create this file before the command is invoked!
<file name="log/test304.txt">
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST /we/want/304 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1386
Content-Type: multipart/form-data; boundary=----------------------------c3b2ef7f0bb8

------------------------------c3b2ef7f0bb8
Content-Disposition: form-data; name="name"

daniel
------------------------------c3b2ef7f0bb8
Content-Disposition: form-data; name="tool"

curl
------------------------------c3b2ef7f0bb8
Content-Disposition: form-data; name="file"; filename="test304.txt"
Content-Type: text/plain

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

------------------------------c3b2ef7f0bb8--
</protocol>
</verify>
</testcase>












|



















|


|










|















|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<testcase>
<info>
<keywords>
HTTPS
HTTP POST
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
HTTPS multipart formpost
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/we/want/%TESTNUMBER -F name=daniel -F tool=curl -F file=@log/test%TESTNUMBER.txt
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1386
Content-Type: multipart/form-data; boundary=----------------------------c3b2ef7f0bb8

------------------------------c3b2ef7f0bb8
Content-Disposition: form-data; name="name"

daniel
------------------------------c3b2ef7f0bb8
Content-Disposition: form-data; name="tool"

curl
------------------------------c3b2ef7f0bb8
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

------------------------------c3b2ef7f0bb8--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test305.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
https
</server>
 <name>
insecure HTTPS without permission
 </name>
 <command>
https://%HOSTIP:%HTTPSPORT/want/305 --cacert moooo
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
77







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
https
</server>
 <name>
insecure HTTPS without permission
 </name>
 <command>
https://%HOSTIP:%HTTPSPORT/want/%TESTNUMBER --cacert moooo
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
77
Changes to jni/curl/tests/data/test306.
33
34
35
36
37
38
39

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</reply>

#
# Client-side
<client>
<features>
SSL

</features>
<server>
https
</server>
 <name>
HTTPS GET, receive no headers only data!
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/306 --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /306 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







>








|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</reply>

#
# Client-side
<client>
<features>
SSL
!hyper
</features>
<server>
https
</server>
 <name>
HTTPS GET, receive no headers only data!
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test307.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<features>
OpenSSL
</features>
<server>
https
</server>
<precheck>
perl %SRCDIR/libtest/test307.pl %CURL
</precheck>

 <name>
simple HTTPS GET with openssl engine
 </name>
 <command>
--engine openssl -k https://%HOSTIP:%HTTPSPORT/307
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /307 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<features>
OpenSSL
</features>
<server>
https
</server>
<precheck>
perl %SRCDIR/libtest/test%TESTNUMBER.pl %CURL
</precheck>

 <name>
simple HTTPS GET with openssl engine
 </name>
 <command>
--engine openssl -k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test308.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
https
</server>
 <name>
simple HTTPS GET with invalid crypto engine
 </name>
 <command>
--engine invalid-crypto-engine-xyzzy -k https://%HOSTIP:%HTTPSPORT/308
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
https
</server>
 <name>
simple HTTPS GET with invalid crypto engine
 </name>
 <command>
--engine invalid-crypto-engine-xyzzy -k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test309.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: https://127.0.0.1:%HTTPSPORT/data/3090002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following to HTTPS URL

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: https://127.0.0.1:%HTTPSPORT/data/3090002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>







|

|







|








|

|



|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: https://%HOSTIP:%HTTPSPORT/data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following to HTTPS URL

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: https://%HOSTIP:%HTTPSPORT/data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
http
https
</server>
 <name>
HTTP Location: redirect to HTTPS URL
 </name>
 <command>
-k http://%HOSTIP:%HTTPPORT/want/309 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/309 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /data/3090002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
http
https
</server>
 <name>
HTTP Location: redirect to HTTPS URL
 </name>
 <command>
-k http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test31.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# with Hyper, the API provides the headers already "sanitized" so we cannot
# compapare with the exact server contents unlesss it too sends the data
# "clean".

<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
%if !hyper
Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure
Set-Cookie:ismatch=this  ; domain=127.0.0.1; path=/silly/







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# with Hyper, the API provides the headers already "sanitized" so we cannot
# compapare with the exact server contents unlesss it too sends the data
# "clean".

<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
%if !hyper
Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure
Set-Cookie:ismatch=this  ; domain=127.0.0.1; path=/silly/
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/31 -b none -c log/jar31.txt
</command>
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/31 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar31.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	/we/want/	FALSE	0	prespace	yes before
127.0.0.1	FALSE	/we/want/	FALSE	0	withspaces2	before equals
127.0.0.1	FALSE	/we/want/	FALSE	0	withspaces	yes  within and around







|









|





|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -b none -c log/jar%TESTNUMBER.txt
</command>
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

127.0.0.1	FALSE	/we/want/	FALSE	0	prespace	yes before
127.0.0.1	FALSE	/we/want/	FALSE	0	withspaces2	before equals
127.0.0.1	FALSE	/we/want/	FALSE	0	withspaces	yes  within and around
Changes to jni/curl/tests/data/test310.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/310
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /310 HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|




















|











|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https Server-localhost-sv.pem
</server>
 <name>
simple HTTPS GET
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: localhost:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test311.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
https Server-localhost0h-sv.pem
</server>
 <name>
HTTPS wrong subjectAltName but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/311
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>








|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
https Server-localhost0h-sv.pem
</server>
 <name>
HTTPS wrong subjectAltName but right CN
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

Changes to jni/curl/tests/data/test312.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
https Server-localhost.nn-sv.pem
</server>
 <name>
HTTPS GET to localhost and null-prefixed CN cert
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/312
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>








|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
https Server-localhost.nn-sv.pem
</server>
 <name>
HTTPS GET to localhost and null-prefixed CN cert
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

Changes to jni/curl/tests/data/test313.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
https Server-localhost-sv.pem
</server>
 <name>
CRL test
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --crlfile %SRCDIR/certs/Server-localhost-sv.crl https://localhost:%HTTPSPORT/313
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>








|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
https Server-localhost-sv.pem
</server>
 <name>
CRL test
 </name>
 <command>
--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --crlfile %SRCDIR/certs/Server-localhost-sv.crl https://localhost:%HTTPSPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost because we're checking the host name
<precheck>
perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
</precheck>
</client>

Changes to jni/curl/tests/data/test314.
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184



185

186
187
188
189
190
191

192



193
194
195
196
<server>
http
</server>
 <name>
HTTP GET brotli compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/314 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>



s/^Accept-Encoding: .*/Accept-Encoding: xxx/

</strippart>
<protocol>
GET /314 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

Accept-Encoding: xxx




</protocol>
</verify>
</testcase>







|







>
>
>

>


|



>

>
>
>




170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<server>
http
</server>
 <name>
HTTP GET brotli compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
%if hyper
s/^Accept-Encoding: .*/Accept-Encoding: xxx /
%else
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
%endif
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
%if hyper
Accept-Encoding: xxx
%else
Accept-Encoding: xxx
%endif

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test315.
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<server>
http
</server>
 <name>
HTTP GET brotli compressed content with broken header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/315 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /315 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
<errorcode>







|










|







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<server>
http
</server>
 <name>
HTTP GET brotli compressed content with broken header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
<errorcode>
Changes to jni/curl/tests/data/test316.
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<server>
http
</server>
 <name>
HTTP GET brotli compressed content of size more than CURL_MAX_WRITE_SIZE
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/316 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /316 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>







|










|







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<server>
http
</server>
 <name>
HTTP GET brotli compressed content of size more than CURL_MAX_WRITE_SIZE
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>
Changes to jni/curl/tests/data/test317.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/3170002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/3170002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/317 -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/317 HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Authorization: s3cr3t

GET http://goto.second.host.now/3170002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|



|







|










|



|




|



















|










|







|









9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Authorization: s3cr3t

GET http://goto.second.host.now/%TESTNUMBER0002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test318.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/3180002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/3180002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/318 -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/318 HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Authorization: s3cr3t

GET http://goto.second.host.now/3180002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Authorization: s3cr3t

</protocol>
</verify>
</testcase>







|



|







|










|



|




|



















|










|







|










9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Authorization: s3cr3t

GET http://goto.second.host.now/%TESTNUMBER0002 HTTP/1.1
Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Authorization: s3cr3t

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test319.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET gzip transfer-encoded data in raw mode
 </name>
 <command option="no-include">
http://%HOSTIP:%HTTPPORT/319 --raw
 </command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /319 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
HTTP GET gzip transfer-encoded data in raw mode
 </name>
 <command option="no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --raw
 </command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test32.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-G
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-G
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP with -d and -G
 </name>
 <command>
-d "foo=moo&moo=poo" http://%HOSTIP:%HTTPPORT/32 -G
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /32?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP with -d and -G
 </name>
 <command>
-d "foo=moo&moo=poo" http://%HOSTIP:%HTTPPORT/%TESTNUMBER -G
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test320.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
</protocol>
<file name="log/curl320.out">
HTTP/1.0 200 OK
Content-type: text/html

FINE
User-Agent: curl-test-suite
Accept: */*








|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
</protocol>
<file name="log/curl%TESTNUMBER.out">
HTTP/1.0 200 OK
Content-type: text/html

FINE
User-Agent: curl-test-suite
Accept: */*

Changes to jni/curl/tests/data/test323.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<features>
TLS-SRP
</features>
 <name>
TLS-SRP to non-TLS-SRP server
 </name>
<command>
--insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword badpass https://%HOSTIP:%HTTPSPORT/want/323
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
35







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<features>
TLS-SRP
</features>
 <name>
TLS-SRP to non-TLS-SRP server
 </name>
<command>
--insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword badpass https://%HOSTIP:%HTTPSPORT/want/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
35
Changes to jni/curl/tests/data/test324.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<features>
TLS-SRP
</features>
 <name>
TLS-SRP with server cert checking
 </name>
<command> # no --insecure
--tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSPORT/want/323
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
60







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<features>
TLS-SRP
</features>
 <name>
TLS-SRP with server cert checking
 </name>
<command> # no --insecure
--tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSPORT/want/fails
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
60
Changes to jni/curl/tests/data/test325.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7
Location: http://somewhere/325

MooMoo
</data>
<datacheck>
HTTP/1.1 301 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7
Location: http://somewhere/325

</datacheck>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
HTTPS with attempted redirect to denied HTTP
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/325 --proto-redir -http --location
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /325 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 1 - Protocol http not supported or disabled in libcurl
<errorcode>
1
</errorcode>
</verify>
</testcase>







|


|





|


|

















|







|











8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7
Location: http://somewhere/%TESTNUMBER

MooMoo
</data>
<datacheck>
HTTP/1.1 301 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7
Location: http://somewhere/%TESTNUMBER

</datacheck>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
 <name>
HTTPS with attempted redirect to denied HTTP
 </name>
 <command>
-k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER --proto-redir -http --location
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
# 1 - Protocol http not supported or disabled in libcurl
<errorcode>
1
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test326.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
 <name>
HTTP GET chunked data in raw mode
 </name>
 <command option="no-include">
http://%HOSTIP:%HTTPPORT/326 --raw
 </command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /326 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
 <name>
HTTP GET chunked data in raw mode
 </name>
 <command option="no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --raw
 </command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test327.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# has been removed - particularly important when the file is going to be read
# again and thus must not contain old contents.

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; expires=Thu, 22 Nov 2037 10:54:11 GMT;

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; expires=Thu, 01 Jan 1970 00:00:00 GMT;

</data2>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookiejar without cookies left
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/327 -b none -c log/cookies327 http://%HOSTIP:%HTTPPORT/we/want/3270002
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/327 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/3270002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: foobar=name

</protocol>
<file name="log/cookies327" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

</file>
</verify>
</testcase>







|








|

















|






|




|






|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# has been removed - particularly important when the file is going to be read
# again and thus must not contain old contents.

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; expires=Thu, 22 Nov 2037 10:54:11 GMT;

</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; expires=Thu, 01 Jan 1970 00:00:00 GMT;

</data2>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookiejar without cookies left
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -b none -c log/cookies%TESTNUMBER http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER0002
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/want/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: foobar=name

</protocol>
<file name="log/cookies%TESTNUMBER" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test328.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
Content-Encoding
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Encoding: none
Content-Length: 38

Q: What did 0 say to 8? A: Nice Belt!
</data>
</reply>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
Content-Encoding
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Encoding: none
Content-Length: 38

Q: What did 0 say to 8? A: Nice Belt!
</data>
</reply>
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<features>
libz
</features>
 <name>
HTTP with "Content-Encoding: none
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/hello/328 --compressed
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^Accept-Encoding:.*
</strip>
<protocol>
GET /hello/328 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<features>
libz
</features>
 <name>
HTTP with "Content-Encoding: none
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/hello/%TESTNUMBER --compressed
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^Accept-Encoding:.*
</strip>
<protocol>
GET /hello/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test329.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

66
67
68
69
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test=yes; path=/we/want/; domain=.host.foo.com; Max-Age=0;
Content-Length: 4

boo
</data>
<data2>
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

moo
</data2>
</reply>

# Client-side
<client>
<file name="log/jar329.txt" mode="text">
.host.foo.com	TRUE	/we/want/	FALSE	2147483647	test	no
</file>



<server>
http
</server>
 <name>
HTTP cookie with Max-Age=0
 </name>
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/329 -b log/jar329.txt -H "Host: host.foo.com" http://%HOSTIP:%HTTPPORT/we/want/3290002
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/329 HTTP/1.1
Host: host.foo.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: test=no

GET /we/want/3290002 HTTP/1.1
Host: host.foo.com
User-Agent: curl/%VERSION
Accept: */*


</protocol>
</verify>
</testcase>












|



















|


>
>
>













|






|



|

|



>




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test=yes; path=/we/want/; domain=.host.foo.com; Max-Age=0;
Content-Length: 4

boo
</data>
<data2>
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4

moo
</data2>
</reply>

# Client-side
<client>
<file name="log/jar%TESTNUMBER.txt" mode="text">
.host.foo.com	TRUE	/we/want/	FALSE	2147483647	test	no
</file>
<file name="log/jar%TESTNUMBER-2.txt" mode="text">
.host.foo.com	TRUE	/we/want/	FALSE	2147483647	tester	yes
</file>
<server>
http
</server>
 <name>
HTTP cookie with Max-Age=0
 </name>
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -b log/jar%TESTNUMBER.txt -b log/jar%TESTNUMBER-2.txt -H "Host: host.foo.com" http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER0002
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: host.foo.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: tester=yes; test=no

GET /we/want/%TESTNUMBER0002 HTTP/1.1
Host: host.foo.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: tester=yes

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test33.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<client>
<server>
http
</server>
 <name>
HTTP PUT with resume
 </name>
<file name="log/test33.txt">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
 <command>
http://%HOSTIP:%HTTPPORT/33 -Tlog/test33.txt -C 50
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /33 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 50-99/100
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 50
Expect: 100-continue








|












|






|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<client>
<server>
http
</server>
 <name>
HTTP PUT with resume
 </name>
<file name="log/test%TESTNUMBER.txt">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -Tlog/test%TESTNUMBER.txt -C 50
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 50-99/100
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 50
Expect: 100-continue

Changes to jni/curl/tests/data/test330.
1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<testcase>
<info>
<keywords>
HTTP

followlocation
cookies
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/3170002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/3170002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with custom Cookie: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/317 -x %HOSTIP:%HTTPPORT -H "Cookie: test=yes" --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/317 HTTP/1.1
Host: first.host.it.is
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: test=yes

GET http://goto.second.host.now/3170002 HTTP/1.1
Host: goto.second.host.now
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>




>









|



|







|










|



|




|



















|










|






|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<testcase>
<info>
<keywords>
HTTP
HTTP proxy
followlocation
cookies
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

contents
</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data2>

<datacheck>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: http://goto.second.host.now/%TESTNUMBER0002
Content-Length: 8
Connection: close

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with custom Cookie: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT -H "Cookie: test=yes" --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://first.host.it.is/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: first.host.it.is
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: test=yes

GET http://goto.second.host.now/%TESTNUMBER0002 HTTP/1.1
Host: goto.second.host.now
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test331.
1
2
3
4
5

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<testcase>
<info>
<keywords>
HTTP
HTTP GET

cookies
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 4
Set-Cookie: moo=yes;

hej
</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Funny-head: yesyes swsclose

</data2>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie using host name 'moo'
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://moo/we/want/331 -b none http://moo/we/want/3310002
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://moo/we/want/331 HTTP/1.1
Host: moo
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://moo/we/want/3310002 HTTP/1.1
Host: moo
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: moo=yes

</protocol>
</verify>
</testcase>





>








|









|

















|









|





|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
cookies
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 4
Set-Cookie: moo=yes;

hej
</data>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Funny-head: yesyes swsclose

</data2>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie using host name 'moo'
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://moo/we/want/%TESTNUMBER -b none http://moo/we/want/%TESTNUMBER0002
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://moo/we/want/%TESTNUMBER HTTP/1.1
Host: moo
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://moo/we/want/%TESTNUMBER0002 HTTP/1.1
Host: moo
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: moo=yes

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test332.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
tftp
</server>
 <name>
TFTP retrieve with blksize 400
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//332 --tftp-blksize 400
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 400
timeout: 6
filename: /332
</protocol>
</verify>
</testcase>







|












|



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
tftp
</server>
 <name>
TFTP retrieve with blksize 400
 </name>
 <command>
tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --tftp-blksize 400
</command>
</client>

#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
mode: octet
tsize: 0
blksize: 400
timeout: 6
filename: /%TESTNUMBER
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test333.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
none
</server>
 <name>
Try a non-boolean command line option with --no-
 </name>
 <command>
--no-proxy "hey" http://%HOSTIP:%NOLISTENPORT/333
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# detected the bad --no- prefix







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
none
</server>
 <name>
Try a non-boolean command line option with --no-
 </name>
 <command>
--no-proxy "hey" http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# detected the bad --no- prefix
Changes to jni/curl/tests/data/test334.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
http
</server>
<name>
HTTP 204 No content with chunked header
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/334
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/334 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
http
</server>
<name>
HTTP 204 No content with chunked header
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test335.
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
crypto
proxy
</features>
 <name>
HTTP with proxy Digest and site Digest with creds in URLs
 </name>
 <command>
http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@%HOSTIP:%HTTPPORT --proxy-digest --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c5626cb"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c5626cb"
Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/335", response="08a2e2e684047f4219a38ddc189ac00c"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|






|





|

|




|

|
|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
crypto
proxy
</features>
 <name>
HTTP with proxy Digest and site Digest with creds in URLs
 </name>
 <command>
http://digest:alot@data.from.server.requiring.digest.hohoho.com/%TESTNUMBER --proxy http://foo:bar@%HOSTIP:%HTTPPORT --proxy-digest --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/%TESTNUMBER", response="f61609cd8f5bb205ef4e169b2c5626cb"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/%TESTNUMBER", response="f61609cd8f5bb205ef4e169b2c5626cb"
Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/%TESTNUMBER", response="08a2e2e684047f4219a38ddc189ac00c"
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test336.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP range download when SIZE doesn't work
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/336 --use-ascii --range 3-6
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE A
SIZE 336
REST 3
RETR 336
ABOR
QUIT
</protocol>
</verify>
</testcase>







|











|
|

|





31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP range download when SIZE doesn't work
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --range 3-6
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
REST 3
RETR %TESTNUMBER
ABOR
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test337.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP range download with SIZE returning extra crap
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/337 --use-ascii --range 3-6
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE A
SIZE 337
REST 3
RETR 337
ABOR
QUIT
</protocol>
</verify>
</testcase>







|











|
|

|





31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
ftp
</server>
 <name>
FTP range download with SIZE returning extra crap
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --range 3-6
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE I
SIZE %TESTNUMBER
REST 3
RETR %TESTNUMBER
ABOR
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test338.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<server>
http
</server>
 <name>
ANYAUTH connection reuse of non-authed connection
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/338 --next http://%HOSTIP:%HTTPPORT/338 --anyauth -u foo:moo
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /338 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /338 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|







|




|








34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<server>
http
</server>
 <name>
ANYAUTH connection reuse of non-authed connection
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --next http://%HOSTIP:%HTTPPORT/%TESTNUMBER --anyauth -u foo:moo
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test339.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
http
</server>
<name>
Check if --etag-save saved correct etag to a file
</name>
<command>
http://%HOSTIP:%HTTPPORT/339 --etag-save log/etag339
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /339 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/etag339">
W/"asdf"
</file>
</verify>

</testcase>







|







|





|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<server>
http
</server>
<name>
Check if --etag-save saved correct etag to a file
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-save log/etag%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/etag%TESTNUMBER">
W/"asdf"
</file>
</verify>

</testcase>
Changes to jni/curl/tests/data/test34.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/34
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /34 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>








|







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP GET with chunked Transfer-Encoding
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>

Changes to jni/curl/tests/data/test340.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP using %00 in path with singlecwd
 </name>
 <command>
--ftp-method singlecwd ftp://%HOSTIP:%FTPPORT/%00first/second/third/340
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
ftp
</server>
 <name>
FTP using %00 in path with singlecwd
 </name>
 <command>
--ftp-method singlecwd ftp://%HOSTIP:%FTPPORT/%00first/second/third/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
Changes to jni/curl/tests/data/test341.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
<name>
Try to open a non existing file with --etag-compare should return an error
</name>
<command>
http://%HOSTIP:%HTTPPORT/341 --etag-compare log/etag341
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
http
</server>
<name>
Try to open a non existing file with --etag-compare should return an error
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-compare log/etag%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test342.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 304 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 304 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<client>
<server>
http
</server>
<name>
Check if --etag-compare set correct etag in header
</name>
<file name="log/etag342">
"21025-dc7-39462498"
</file>
<command>
http://%HOSTIP:%HTTPPORT/342 --etag-compare log/etag342
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /342 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
</verify>
</testcase>







|



|







|








29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<client>
<server>
http
</server>
<name>
Check if --etag-compare set correct etag in header
</name>
<file name="log/etag%TESTNUMBER">
"21025-dc7-39462498"
</file>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-compare log/etag%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test343.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-11111"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-11111"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<client>
<server>
http
</server>
<name>
Both --etag-compare and --etag-save to save new Etag
</name>
<file name="log/etag343">
"21025-dc7-39462498"
</file>
<command>
http://%HOSTIP:%HTTPPORT/343 --etag-compare log/etag343 --etag-save log/out343
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /343 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
<file name="log/out343">
"21025-dc7-11111"
</file>
</verify>
</testcase>







|



|







|






|




29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<client>
<server>
http
</server>
<name>
Both --etag-compare and --etag-save to save new Etag
</name>
<file name="log/etag%TESTNUMBER">
"21025-dc7-39462498"
</file>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-compare log/etag%TESTNUMBER --etag-save log/out%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
<file name="log/out%TESTNUMBER">
"21025-dc7-11111"
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test344.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-11111"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-11111"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
http
</server>
<name>
Both --etag-compare and -save store new Etag using non-existing file
</name>
<command>
http://%HOSTIP:%HTTPPORT/344 --etag-compare log/etag344 --etag-save log/etag344
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /344 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: ""

</protocol>
<file name="log/etag344">
"21025-dc7-11111"
</file>
</verify>
</testcase>







|







|






|




30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
http
</server>
<name>
Both --etag-compare and -save store new Etag using non-existing file
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-compare log/etag%TESTNUMBER --etag-save log/etag%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: ""

</protocol>
<file name="log/etag%TESTNUMBER">
"21025-dc7-11111"
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test345.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-11111"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-11111"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<client>
<server>
http
</server>
<name>
Both --etag-compare and -save store new Etag using one pre-existing file
</name>
<file name="log/etag345">
"21025-dc7-39462498"
</file>
<command>
http://%HOSTIP:%HTTPPORT/345 --etag-compare log/etag345 --etag-save log/etag345
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /345 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
<file name="log/etag345">
"21025-dc7-11111"
</file>
</verify>
</testcase>







|



|







|






|




29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<client>
<server>
http
</server>
<name>
Both --etag-compare and -save store new Etag using one pre-existing file
</name>
<file name="log/etag%TESTNUMBER">
"21025-dc7-39462498"
</file>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-compare log/etag%TESTNUMBER --etag-save log/etag%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
<file name="log/etag%TESTNUMBER">
"21025-dc7-11111"
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test346.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
proxy
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
proxy
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
<name>
HTTP GET over proxy with credentials using blank passwords
</name>
<command>
-x http://%HOSTIP:%HTTPPORT/346 -U puser: -u suser: http://remote.example/346
</command>
</client>

#
<verify>
<protocol>
GET http://remote.example/346 HTTP/1.1
Host: remote.example
Proxy-Authorization: Basic cHVzZXI6
Authorization: Basic c3VzZXI6
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|






|










34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
<name>
HTTP GET over proxy with credentials using blank passwords
</name>
<command>
-x http://%HOSTIP:%HTTPPORT/%TESTNUMBER -U puser: -u suser: http://remote.example/%TESTNUMBER
</command>
</client>

#
<verify>
<protocol>
GET http://remote.example/%TESTNUMBER HTTP/1.1
Host: remote.example
Proxy-Authorization: Basic cHVzZXI6
Authorization: Basic c3VzZXI6
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test347.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
http
</server>
<name>
--etag-save with blank incoming header
</name>
<command>
http://%HOSTIP:%HTTPPORT/347 --etag-save log/etag347
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /347 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/etag347">
</file>
</verify>

</testcase>







|







|





|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
http
</server>
<name>
--etag-save with blank incoming header
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-save log/etag%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/etag%TESTNUMBER">
</file>
</verify>

</testcase>
Changes to jni/curl/tests/data/test348.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<client>
<server>
ftp
</server>
 <name>
FTP upload file with 552 disk full response
 </name>
<file name="log/test348.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/348 -T log/test348.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
    to
      see
that FTP
works
  so does it?
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR 348
QUIT
</protocol>
# 70 - CURLE_REMOTE_DISK_FULL
<errorcode>
70
</errorcode>
</verify>
</testcase>







|








|



















|








17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<client>
<server>
ftp
</server>
 <name>
FTP upload file with 552 disk full response
 </name>
<file name="log/test%TESTNUMBER.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
    to
      see
that FTP
works
  so does it?
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
# 70 - CURLE_REMOTE_DISK_FULL
<errorcode>
70
</errorcode>
</verify>
</testcase>
Added jni/curl/tests/data/test349.


























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--fail-with-body
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 404 BAD BOY swsclose
Content-Type: text/html

This silly page doesn't reaaaaaly exist so you should not get it.
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --fail-with-body on HTTP error return
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --fail-with-body
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
22
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test35.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test354.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP without password
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/354
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PWD
EPSV
TYPE I
SIZE 354
RETR 354
QUIT
</protocol>
</verify>
</testcase>







|











|
|




26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
ftp
</server>
 <name>
FTP without password
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test355.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
Alt-Svc
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
Alt-Svc
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
load Alt-Svc from file and use
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/355 --alt-svc ""
</command>
<file name="log/altsvc-355">
h1 example.com 80 h1 %HOSTIP %HTTPPORT "20290222 22:19:28" 0 0
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /355 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|

|








|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<server>
http
</server>
 <name>
load Alt-Svc from file and use
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --alt-svc ""
</command>
<file name="log/altsvc-%TESTNUMBER">
h1 example.com 80 h1 %HOSTIP %HTTPPORT "20290222 22:19:28" 0 0
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test356.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
Alt-Svc
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
Alt-Svc: h1="nowhere.foo:81", un-kno22!wn=":82"

-foo-













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
Alt-Svc
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
Alt-Svc: h1="nowhere.foo:81", un-kno22!wn=":82"

-foo-
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
parse incoming Alt-Svc and save to file
 </name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/356 --alt-svc "log/altsvc-356"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /356 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stripfile>
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-356" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h1 %HOSTIP %HTTPPORT h1 nowhere.foo 81 TIMESTAMP 0 0
</file>
</verify>
</testcase>







|







|










|






36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
parse incoming Alt-Svc and save to file
 </name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --alt-svc "log/altsvc-%TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stripfile>
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-%TESTNUMBER" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h1 %HOSTIP %HTTPPORT h1 nowhere.foo 81 TIMESTAMP 0 0
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test357.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
Expect
</keywords>
</info>
# Server-side
<reply>
# 417 means the server didn't like the Expect header
<data>
HTTP/1.1 417 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data1>
<datacheck>
HTTP/1.1 417 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</datacheck>
<servercmd>
no-expect
</servercmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT with Expect: 100-continue and 417 response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/357 -T log/test357.txt
</command>
<file name="log/test357.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/357 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

PUT /we/want/357 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file













|






|







|




|



















|

|















|






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
Expect
</keywords>
</info>
# Server-side
<reply>
# 417 means the server didn't like the Expect header
<data>
HTTP/1.1 417 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data1>
<datacheck>
HTTP/1.1 417 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 0

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</datacheck>
<servercmd>
no-expect
</servercmd>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP PUT with Expect: 100-continue and 417 response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -T log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
Weird
     file
         to
   upload
for
   testing
the
   PUT
      feature
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78
Expect: 100-continue

PUT /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 78

Weird
     file
Changes to jni/curl/tests/data/test358.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0

-foo-







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0

-foo-
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
HTTPS GET translated by alt-svc lookup to HTTP/2 GET
 </name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
 <command>
--http2 --alt-svc "log/altsvc-358" "http://%HOSTIP:%HTTPPORT/358" "http://%HOSTIP:%HTTPPORT/358"
</command>
<file name="log/altsvc-358">
h2 %HOSTIP %HTTPPORT h2 %HOSTIP %HTTP2PORT "20290222 22:19:28" 0 0
</file>

</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
</stdout>
<stripfile>
s/^server: nghttpx.*\r?\n//
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"2([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-358" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h2 %HOSTIP %HTTPPORT h2 %HOSTIP %HTTP2PORT TIMESTAMP 0 0
</file>
</verify>
</testcase>







|

|














|








|














|






39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
HTTPS GET translated by alt-svc lookup to HTTP/2 GET
 </name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
 <command>
--http2 --alt-svc "log/altsvc-%TESTNUMBER" "http://%HOSTIP:%HTTPPORT/%TESTNUMBER" "http://%HOSTIP:%HTTPPORT/%TESTNUMBER"
</command>
<file name="log/altsvc-%TESTNUMBER">
h2 %HOSTIP %HTTPPORT h2 %HOSTIP %HTTP2PORT "20290222 22:19:28" 0 0
</file>

</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
</stdout>
<stripfile>
s/^server: nghttpx.*\r?\n//
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"2([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-%TESTNUMBER" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h2 %HOSTIP %HTTPPORT h2 %HOSTIP %HTTP2PORT TIMESTAMP 0 0
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test359.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0

-foo-







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0

-foo-
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
HTTPS GET translated by alt-svc lookup to HTTP/2 GET
 </name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
 <command>
--http2 --alt-svc "log/altsvc-359" "http://%HOSTIP:%HTTPSPORT/359" "http://%HOSTIP:%HTTPSPORT/359"
</command>
<file name="log/altsvc-359">
h2 %HOSTIP %HTTPSPORT h2 %HOSTIP %HTTP2PORT "20290222 22:19:28" 0 0
</file>

</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
HTTP/2 200 
date: Thu, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
</stdout>
<stripfile>
s/^server: nghttpx.*\r?\n//
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"2([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-359" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h2 %HOSTIP %HTTPSPORT h2 %HOSTIP %HTTP2PORT TIMESTAMP 0 0
</file>
</verify>
</testcase>







|

|














|








|














|






39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
HTTPS GET translated by alt-svc lookup to HTTP/2 GET
 </name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
 <command>
--http2 --alt-svc "log/altsvc-%TESTNUMBER" "http://%HOSTIP:%HTTPSPORT/%TESTNUMBER" "http://%HOSTIP:%HTTPSPORT/%TESTNUMBER"
</command>
<file name="log/altsvc-%TESTNUMBER">
h2 %HOSTIP %HTTPSPORT h2 %HOSTIP %HTTP2PORT "20290222 22:19:28" 0 0
</file>

</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
HTTP/2 200 
date: Tue, 09 Nov 2010 14:49:00 GMT
content-length: 6
content-type: text/html
funny-head: yesyes
alt-svc: h2=":%HTTP2PORT", ma=315360000; persist=0
via: 1.1 nghttpx

-foo-
</stdout>
<stripfile>
s/^server: nghttpx.*\r?\n//
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"2([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-%TESTNUMBER" mode="text">
# Your alt-svc cache. https://curl.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h2 %HOSTIP %HTTPSPORT h2 %HOSTIP %HTTP2PORT TIMESTAMP 0 0
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test36.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP GET with bad chunked Transfer-Encoding
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/36
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
GET /36 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>








|










|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<server>
http
</server>
 <name>
HTTP GET with bad chunked Transfer-Encoding
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>

Added jni/curl/tests/data/test360.
























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<testcase>
<info>
<keywords>
--fail
--fail-with-body
</keywords>
</info>

# Client-side
<client>
<server>
http
</server>
 <name>
Error on both --fail-with-body and --fail
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --fail-with-body --fail
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
2
</errorcode>
</verify>
</testcase>
Added jni/curl/tests/data/test361.




































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--fail-with-body
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 404 BAD BOY swsclose
Content-Type: text/html

This silly page doesn't reaaaaaly exist so you should not get it.
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP GET --fail-with-body on HTTP error return - twice
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER --fail-with-body
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<errorcode>
22
</errorcode>
</verify>
</testcase>
Added jni/curl/tests/data/test362.






































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
FTP
EPSV
STOR
</keywords>
</info>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP resume upload file with nothing to start from
 </name>
<file name="log/test%TESTNUMBER.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt --continue-at -
</command>
</client>

<verify>
<upload>
data
    to
      see
that FTP
works
  so does it?
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
STOR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test37.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with nothing returned from server
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/37
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
52
</errorcode>
<protocol>
GET /37 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>








|










|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
http
</server>
 <name>
HTTP GET with nothing returned from server
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
52
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>

Changes to jni/curl/tests/data/test38.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
http
</server>
 <name>
HTTP resume request without server supporting it
 </name>
 <command option="no-output">
http://%HOSTIP:%HTTPPORT/want/38 -C - --no-include -o log/fewl38.txt
</command>
<file name="log/fewl38.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
<protocol>
GET /want/38 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=78-
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# the download target file must remain untouched
<file name="log/fewl38.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
</verify>
</testcase>







|

|











|








|





24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
http
</server>
 <name>
HTTP resume request without server supporting it
 </name>
 <command option="no-output">
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -C - --no-include -o log/fewl%TESTNUMBER.txt
</command>
<file name="log/fewl%TESTNUMBER.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=78-
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# the download target file must remain untouched
<file name="log/fewl%TESTNUMBER.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test39.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with filename= and type=
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/test39.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/test39.txt -F "file3=@\"log/test39.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/test39.txt"; filename="A\\AA\"\"\\\"ZZZ"'
</command>
# We create this file before the command is invoked!
<file name="log/test39.txt">
foo bar
This is a bar foo
bar
foo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|-------).*
</strip>
<protocol>
POST /we/want/39 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1184
Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32

------------------------------24e78000bd32











|
















|


|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 10

blablabla
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting with filename= and type=
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/test%TESTNUMBER.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/test%TESTNUMBER.txt -F "file3=@\"log/test%TESTNUMBER.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/test%TESTNUMBER.txt"; filename="A\\AA\"\"\\\"ZZZ"'
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
foo bar
This is a bar foo
bar
foo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|-------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 1184
Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32

------------------------------24e78000bd32
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file2"; filename="test39.txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo








|







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

foo bar
This is a bar foo
bar
foo

------------------------------24e78000bd32
Content-Disposition: form-data; name="file2"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo bar
This is a bar foo
bar
foo

Changes to jni/curl/tests/data/test393.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 36893488147419103232
Connection: close
Content-Type: text/html







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 36893488147419103232
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP max-filesize and out-of-range Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/393 --max-filesize 2000000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
63
</errorcode>
<protocol>
GET /393 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|










|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
http
</server>
 <name>
HTTP max-filesize and out-of-range Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --max-filesize 2000000
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
63
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test394.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: crap
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: crap
Connection: close
Content-Type: text/html
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http
</server>
 <name>
HTTP with rubbish in Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/394
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
8
</errorcode>
<protocol>
GET /394 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|










|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
http
</server>
 <name>
HTTP with rubbish in Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
8
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test395.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 36893488147419103232
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 36893488147419103232
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP and out-of-range Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/395
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /395 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
http
</server>
 <name>
HTTP and out-of-range Content-Length
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test396.
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<server>
http
</server>
 <name>
HTTP GET zstd compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/396 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /396 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>







|










|







174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<server>
http
</server>
 <name>
HTTP GET zstd compressed content
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>
Changes to jni/curl/tests/data/test397.
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<server>
http
</server>
 <name>
HTTP GET zstd compressed content of size more than CURL_MAX_WRITE_SIZE
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/397 --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /397 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>







|










|







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<server>
http
</server>
 <name>
HTTP GET zstd compressed content of size more than CURL_MAX_WRITE_SIZE
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --compressed
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
</strippart>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Accept-Encoding: xxx

</protocol>
</verify>
Changes to jni/curl/tests/data/test4.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Replaced internal and added custom HTTP headers
 </name>
 <command>
 -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3:  " -H "X-Test4;  " -H "X-Test5;ignored" http://%HOSTIP:%HTTPPORT/4 http://%HOSTIP:%HTTPPORT/4
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /4 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
extra-header: here
Accept: replaced
X-Custom-Header:
X-Test: foo; 
X-Test2: foo;

GET /4 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
extra-header: here
Accept: replaced
X-Custom-Header:
X-Test: foo; 
X-Test2: foo;

</protocol>
</verify>
</testcase>







|

















|







|








|











8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Replaced internal and added custom HTTP headers
 </name>
 <command>
 -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3:  " -H "X-Test4;  " -H "X-Test5;ignored" http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
extra-header: here
Accept: replaced
X-Custom-Header:
X-Test: foo; 
X-Test2: foo;

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
extra-header: here
Accept: replaced
X-Custom-Header:
X-Test: foo; 
X-Test2: foo;

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test40.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/?name=d a niel&testcase=/400002    
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
%if !hyper
Location: ../moo.html/?name=d a niel&testcase=/400002    
%else
Location: ../moo.html/?name=d a niel&testcase=/400002
%endif
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with whitespace after ? (and conversion)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/40 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/40 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/moo.html/?name=d+a+niel&testcase=/400002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|







|

|

|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/?name=d a niel&testcase=/%TESTNUMBER0002    
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
%if !hyper
Location: ../moo.html/?name=d a niel&testcase=/%TESTNUMBER0002    
%else
Location: ../moo.html/?name=d a niel&testcase=/%TESTNUMBER0002
%endif
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with whitespace after ? (and conversion)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/moo.html/?name=d+a+niel&testcase=/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test401.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</features>
<server>
ftps
</server>
 <name>
FTPS PASV upload file
 </name>
<file name="log/test401.txt">
data
    to
      see
that FTPS
works
  so does it?
</file>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/401 -T log/test401.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data







|








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</features>
<server>
ftps
</server>
 <name>
FTPS PASV upload file
 </name>
<file name="log/test%TESTNUMBER.txt">
data
    to
      see
that FTPS
works
  so does it?
</file>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
46
47
48
49
50
51
52
53
54
55
56
57
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
EPSV
TYPE I
STOR 401
QUIT
</protocol>
</verify>
</testcase>







|




46
47
48
49
50
51
52
53
54
55
56
57
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
EPSV
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test402.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
ftp
</server>
 <name>
FTP SSL required on non-SSL server
 </name>
 <command>
-k --ftp-ssl-reqd ftp://%HOSTIP:%FTPPORT/402
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
64







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
ftp
</server>
 <name>
FTP SSL required on non-SSL server
 </name>
 <command>
-k --ftp-ssl-reqd ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
64
Changes to jni/curl/tests/data/test405.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
ftp
</server>
 <name>
FTPS operation to FTP port
 </name>
 <command>
-m 5 -k ftps://%HOSTIP:%FTPPORT/path/to/file/405
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# error code 35 is CURLE_SSL_CONNECT_ERROR
# GnuTLS seems to not fail on its handshake but instead times out which gives







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
ftp
</server>
 <name>
FTPS operation to FTP port
 </name>
 <command>
-m 5 -k ftps://%HOSTIP:%FTPPORT/path/to/file/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
# error code 35 is CURLE_SSL_CONNECT_ERROR
# GnuTLS seems to not fail on its handshake but instead times out which gives
Changes to jni/curl/tests/data/test407.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
ftps
</server>
 <name>
Get two FTPS files from the same remote dir: no second CWD
 </name>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/a/path/407 ftps://%HOSTIP:%FTPSPORT/a/path/407
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
CWD a
CWD path
EPSV
TYPE I
SIZE 407
RETR 407
EPSV
SIZE 407
RETR 407
QUIT
</protocol>
</verify>
</testcase>







|



















|
|

|
|




25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
ftps
</server>
 <name>
Get two FTPS files from the same remote dir: no second CWD
 </name>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/a/path/%TESTNUMBER ftps://%HOSTIP:%FTPSPORT/a/path/%TESTNUMBER
</command>
<stdout>
data blobb
data blobb
</stdout>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
CWD a
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test408.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
ftps
</server>
 <name>
FTPS PORT upload with CWD
 </name>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/CWD/STOR/RETR/408 -T log/upload408 -P -
</command>
<file name="log/upload408">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>







|

|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
ftps
</server>
 <name>
FTPS PORT upload with CWD
 </name>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/CWD/STOR/RETR/%TESTNUMBER -T log/upload%TESTNUMBER -P -
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
PROT C
PWD
CWD CWD
CWD STOR
CWD RETR
PORT 127,0,0,1,5,109
TYPE I
STOR 408
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>







|








47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
PROT C
PWD
CWD CWD
CWD STOR
CWD RETR
PORT 127,0,0,1,5,109
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test409.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</features>
<server>
ftps
</server>
 <name>
FTPS PASV upload file
 </name>
<file name="log/test409.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/409 -T log/test409.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data







|








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</features>
<server>
ftps
</server>
 <name>
FTPS PASV upload file
 </name>
<file name="log/test%TESTNUMBER.txt">
data
    to
      see
that FTP
works
  so does it?
</file>
 <command>
-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<upload>
data
46
47
48
49
50
51
52
53
54
55
56
57
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
EPSV
TYPE I
STOR 409
QUIT
</protocol>
</verify>
</testcase>







|




46
47
48
49
50
51
52
53
54
55
56
57
USER anonymous
PASS ftp@example.com
PBSZ 0
PROT C
PWD
EPSV
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test41.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
http
</server>
 <name>
HTTP formpost with missing file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/41 -F moo=@boo
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
26







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<server>
http
</server>
 <name>
HTTP formpost with missing file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -F moo=@boo
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
26
Changes to jni/curl/tests/data/test410.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
https
</server>
 <name>
HTTPS GET with very long request header
 </name>
# 14 characters repeated 3500 times makes 49000 bytes
<file name="log/file410">
Long: %repeat[3500 x header content]%
</file>
 <command>
-k https://%HOSTIP:%HTTPSPORT/410 -H @log/file410
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /410 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*
Long: %repeat[3500 x header content]%

</protocol>
</verify>







|



|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
https
</server>
 <name>
HTTPS GET with very long request header
 </name>
# 14 characters repeated 3500 times makes 49000 bytes
<file name="log/file%TESTNUMBER">
Long: %repeat[3500 x header content]%
</file>
 <command>
-k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER -H @log/file%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
User-Agent: curl/%VERSION
Accept: */*
Long: %repeat[3500 x header content]%

</protocol>
</verify>
Changes to jni/curl/tests/data/test42.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../m o o.html/420002    
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
%if !hyper
Location: ../m o o.html/420002    
%else
Location: ../m o o.html/420002
%endif
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with whitespace in path (and conversion)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/42 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/42 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/m%20o%20o.html/420002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|







|

|

|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../m o o.html/%TESTNUMBER0002    
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
%if !hyper
Location: ../m o o.html/%TESTNUMBER0002    
%else
Location: ../m o o.html/%TESTNUMBER0002
%endif
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with whitespace in path (and conversion)
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/m%20o%20o.html/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test43.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
HTTP proxy
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/430002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/430002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following over HTTP proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/43 -L -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/43 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/want/data/430002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>













|

|







|








|

|



|

















|









|





|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
HTTP proxy
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/%TESTNUMBER0002.txt?coolsite=yes
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP Location: following over HTTP proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test430.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
-foo-
</data3>
</reply>

#
# Client-side
<client>
<file1 name="log/config430-a">
--next
url = %HOSTIP:%HTTPPORT/4300001
header = "a: a"
data = "a"
</file1>
<file2 name="log/config430-b">
--next
url = %HOSTIP:%HTTPPORT/4300002
header = "b: b"
data = "b"
</file2>
<file3 name="log/config430-c">
--next
url = %HOSTIP:%HTTPPORT/4300003
header = "c: c"
data = "c"
</file3>

<server>
http
</server>
 <name>
Three -K uses with --next and --data in each
 </name>
 <command>
-K log/config430-a -K log/config430-b -K log/config430-c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /4300001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

aPOST /4300002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
b: b
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

bPOST /4300003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
c: c
Content-Length: 1
Content-Type: application/x-www-form-urlencoded








|

|



|

|



|

|











|







|







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
-foo-
</data3>
</reply>

#
# Client-side
<client>
<file1 name="log/config%TESTNUMBER-a">
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0001
header = "a: a"
data = "a"
</file1>
<file2 name="log/config%TESTNUMBER-b">
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0002
header = "b: b"
data = "b"
</file2>
<file3 name="log/config%TESTNUMBER-c">
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0003
header = "c: c"
data = "c"
</file3>

<server>
http
</server>
 <name>
Three -K uses with --next and --data in each
 </name>
 <command>
-K log/config%TESTNUMBER-a -K log/config%TESTNUMBER-b -K log/config%TESTNUMBER-c
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

aPOST /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
b: b
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

bPOST /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
c: c
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

Changes to jni/curl/tests/data/test431.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
-foo-
</data3>
</reply>

#
# Client-side
<client>
<file1 name="log/config431-a">
--next
url = %HOSTIP:%HTTPPORT/4310001
header = "a: a"
data = "a"
</file1>
<file2 name="log/config431-b">
--next
url = %HOSTIP:%HTTPPORT/4310002
header = "b: b"
data = "b"
</file2>

<server>
http
</server>
 <name>
Two -K uses with --next and then one on cmdline
 </name>
 <command>
-K log/config431-a -K log/config431-b --next -d c %HOSTIP:%HTTPPORT/4310003 -H "c: c"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /4310001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

aPOST /4310002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
b: b
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

bPOST /4310003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
c: c
Content-Length: 1
Content-Type: application/x-www-form-urlencoded








|

|



|

|











|







|







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
-foo-
</data3>
</reply>

#
# Client-side
<client>
<file1 name="log/config%TESTNUMBER-a">
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0001
header = "a: a"
data = "a"
</file1>
<file2 name="log/config%TESTNUMBER-b">
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0002
header = "b: b"
data = "b"
</file2>

<server>
http
</server>
 <name>
Two -K uses with --next and then one on cmdline
 </name>
 <command>
-K log/config%TESTNUMBER-a -K log/config%TESTNUMBER-b --next -d c %HOSTIP:%HTTPPORT/%TESTNUMBER0003 -H "c: c"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

aPOST /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
b: b
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

bPOST /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
c: c
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

Changes to jni/curl/tests/data/test432.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
-foo-
</data3>
</reply>

#
# Client-side
<client>
<file1 name="log/config432">
--next
url = %HOSTIP:%HTTPPORT/4320001
header = "a: a"
data = "a"
--next
url = %HOSTIP:%HTTPPORT/4320002
header = "b: b"
data = "b"
config = "log/config432-c"
</file1>
<file2 name="log/config432-c">
--next
url = %HOSTIP:%HTTPPORT/4320003
header = "c: c"
data = "c"
</file2>

<server>
http
</server>
 <name>
Use -K with --next and --config from within
 </name>
 <command>
-K log/config432
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /4320001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

aPOST /4320002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
b: b
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

bPOST /4320003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
c: c
Content-Length: 1
Content-Type: application/x-www-form-urlencoded








|

|



|


|

|

|











|







|







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
-foo-
</data3>
</reply>

#
# Client-side
<client>
<file1 name="log/config%TESTNUMBER">
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0001
header = "a: a"
data = "a"
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0002
header = "b: b"
data = "b"
config = "log/config%TESTNUMBER-c"
</file1>
<file2 name="log/config%TESTNUMBER-c">
--next
url = %HOSTIP:%HTTPPORT/%TESTNUMBER0003
header = "c: c"
data = "c"
</file2>

<server>
http
</server>
 <name>
Use -K with --next and --config from within
 </name>
 <command>
-K log/config%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

aPOST /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
b: b
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

bPOST /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
c: c
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

Changes to jni/curl/tests/data/test433.
26
27
28
29
30
31
32


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
data = "curlrc read"
</file1>
<server>
http
</server>
<setenv>
XDG_CONFIG_HOME=%PWD/log


</setenv>
<name>
Verify XDG_CONFIG_HOME use to find .curlrc
</name>
<command>
%HOSTIP:%HTTPPORT/433
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /433 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 11
Content-Type: application/x-www-form-urlencoded








>
>





|







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
data = "curlrc read"
</file1>
<server>
http
</server>
<setenv>
XDG_CONFIG_HOME=%PWD/log
HOME=
CURL_HOME=
</setenv>
<name>
Verify XDG_CONFIG_HOME use to find .curlrc
</name>
<command>
%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
a: a
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

Changes to jni/curl/tests/data/test434.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

-foo-
</data>
</reply>

#
<client>
<file name="log/config434" nonewline="yes">
url = %HOSTIP:%HTTPPORT/434
</file>
<server>
http
</server>
<name>
-K with a single line without newline
</name>
<command>
-K log/config434
</command>
</client>

#
<verify>
<protocol>
GET /434 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|
|








|






|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

-foo-
</data>
</reply>

#
<client>
<file name="log/config%TESTNUMBER" nonewline="yes">
url = %HOSTIP:%HTTPPORT/%TESTNUMBER
</file>
<server>
http
</server>
<name>
-K with a single line without newline
</name>
<command>
-K log/config%TESTNUMBER
</command>
</client>

#
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test44.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
HTTP replaced headers
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting without Expect: header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/44 -F name=daniel -F tool=curl -F file=@log/test44.txt -H "Expect:"
</command>
# We create this file before the command is invoked!
<file name="log/test44.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST /we/want/44 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 408
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test44.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
</protocol>
</verify>
</testcase>












|
















|


|












|















|










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
HTTP replaced headers
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting without Expect: header
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F name=daniel -F tool=curl -F file=@log/test%TESTNUMBER.txt -H "Expect:"
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 408
Content-Type: multipart/form-data; boundary=----------------------------7c633d5c27ce

------------------------------7c633d5c27ce
Content-Disposition: form-data; name="name"

daniel
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="tool"

curl
------------------------------7c633d5c27ce
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------7c633d5c27ce--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test45.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data.cgi?moo=http://&/450002
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data.cgi?moo=http://&/450002
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP Location: without protocol in initial URL
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/45 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/45 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data.cgi?moo=http://&/450002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|

|







|








|

|



|

















|






|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data.cgi?moo=http://&/%TESTNUMBER0002
Connection: close

This server reply is for testing a simple Location: following

</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data.cgi?moo=http://&/%TESTNUMBER0002
Connection: close

HTTP/1.1 200 Followed here fine swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52

If this is received, the location following worked

</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP Location: without protocol in initial URL
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /want/data.cgi?moo=http://&/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test46.
1
2
3
4
5
6
7

8
9
10
11
12
13
14
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
cookiejar

</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK







>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
cookiejar
--resolve
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different from what we expect.
<setenv>
TZ=GMT
</setenv>
 <command>
domain..tld:%HTTPPORT/want/46 --resolve domain..tld:%HTTPPORT:%HOSTIP -c log/jar46 -b log/injar46
</command>
<file name="log/injar46">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This is generated by libcurl!  Do not edit.

www.fake.come	FALSE	/	FALSE	2147483647	cookiecliente	si
www.loser.com	FALSE	/	FALSE	2139150993	UID	99
domain..tld	FALSE	/	FALSE	2139150993	mooo	indeed
#HttpOnly_domain..tld	FALSE	/want	FALSE	2139150993	mooo2	indeed2
domain..tld	FALSE	/want	FALSE	0	empty	
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/46 HTTP/1.1
Host: domain..tld:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: empty=; mooo2=indeed2; mooo=indeed

</protocol>
<file name="log/jar46" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

domain..tld	FALSE	/want/	FALSE	0	simplyhuge	zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
domain..tld	FALSE	/	FALSE	0	justaname	
domain..tld	FALSE	/	FALSE	0	ASPSESSIONIDQGGQQSJJ	GKNBDIFAAOFDPDAIEAKDIBKE







|

|















|






|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different from what we expect.
<setenv>
TZ=GMT
</setenv>
 <command>
domain..tld:%HTTPPORT/want/%TESTNUMBER --resolve domain..tld:%HTTPPORT:%HOSTIP -c log/jar%TESTNUMBER -b log/injar%TESTNUMBER
</command>
<file name="log/injar%TESTNUMBER">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This is generated by libcurl!  Do not edit.

www.fake.come	FALSE	/	FALSE	2147483647	cookiecliente	si
www.loser.com	FALSE	/	FALSE	2139150993	UID	99
domain..tld	FALSE	/	FALSE	2139150993	mooo	indeed
#HttpOnly_domain..tld	FALSE	/want	FALSE	2139150993	mooo2	indeed2
domain..tld	FALSE	/want	FALSE	0	empty	
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: domain..tld:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: empty=; mooo2=indeed2; mooo=indeed

</protocol>
<file name="log/jar%TESTNUMBER" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

domain..tld	FALSE	/want/	FALSE	0	simplyhuge	zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
domain..tld	FALSE	/	FALSE	0	justaname	
domain..tld	FALSE	/	FALSE	0	ASPSESSIONIDQGGQQSJJ	GKNBDIFAAOFDPDAIEAKDIBKE
Changes to jni/curl/tests/data/test47.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP/1.0
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

-foo- within foo -!foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP 1.0 GET
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/47 -0
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /47 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>

</testcase>













|
















|







|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP/1.0
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

-foo- within foo -!foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
simple HTTP 1.0 GET
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -0
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.0
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>

</testcase>
Changes to jni/curl/tests/data/test48.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Server-side
<reply>
<servercmd>
connection-monitor
</servercmd>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with -d and -G and -I
 </name>
 <command>
-d "foo=moo&moo=poo" http://%HOSTIP:%HTTPPORT/48 -G -I http://%HOSTIP:%HTTPPORT/48
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /48?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

HEAD /48?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|














|







|




|








10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Server-side
<reply>
<servercmd>
connection-monitor
</servercmd>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with -d and -G and -I
 </name>
 <command>
-d "foo=moo&moo=poo" http://%HOSTIP:%HTTPPORT/%TESTNUMBER -G -I http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

HEAD /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test49.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/490002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/490002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with ../
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/49 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/49 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/moo.html/490002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../moo.html/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with ../
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/moo.html/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test490.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
Two globbed HTTP PUTs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/490 -T '{log/in490,log/in490}'
</command>
<file name="log/in490">
surprise!
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /490 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
PUT /490 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
</protocol>
</verify>
</testcase>







|

|








|







|










31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<server>
http
</server>
 <name>
Two globbed HTTP PUTs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T '{log/in%TESTNUMBER,log/in%TESTNUMBER}'
</command>
<file name="log/in%TESTNUMBER">
surprise!
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test491.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<server>
http
</server>
 <name>
Two globbed HTTP PUTs, the second upload file is missing
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/491 -T '{log/in491,log/bad491}'
</command>
<file name="log/in491">
surprise!
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /491 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
</protocol>
<errorcode>
26
</errorcode>
</verify>
</testcase>







|

|








|













31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<server>
http
</server>
 <name>
Two globbed HTTP PUTs, the second upload file is missing
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T '{log/in%TESTNUMBER,log/bad%TESTNUMBER}'
</command>
<file name="log/in%TESTNUMBER">
surprise!
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
</protocol>
<errorcode>
26
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test492.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<server>
http
</server>
 <name>
Two globbed HTTP PUTs to two globbed URLs
 </name>
 <command>
'http://%HOSTIP:%HTTPPORT/{one,two}/' -T '{log/first492,log/second492}' -H "Testno: 492"
</command>
<file name="log/first492">
first 492 contents
</file>
<file1 name="log/second492">
second 492 contents
</file1>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /one/first492 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: 492
Content-Length: 19
Expect: 100-continue

first 492 contents
PUT /two/first492 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: 492
Content-Length: 19
Expect: 100-continue

first 492 contents
PUT /one/second492 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: 492
Content-Length: 20
Expect: 100-continue

second 492 contents
PUT /two/second492 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: 492
Content-Length: 20
Expect: 100-continue

second 492 contents
</protocol>
</verify>
</testcase>







|

|
|

|
|







|



|



|
|



|



|
|



|



|
|



|



|



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<server>
http
</server>
 <name>
Two globbed HTTP PUTs to two globbed URLs
 </name>
 <command>
'http://%HOSTIP:%HTTPPORT/{one,two}/' -T '{log/first%TESTNUMBER,log/second%TESTNUMBER}' -H "Testno: %TESTNUMBER"
</command>
<file name="log/first%TESTNUMBER">
first %TESTNUMBER contents
</file>
<file1 name="log/second%TESTNUMBER">
second %TESTNUMBER contents
</file1>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /one/first%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: %TESTNUMBER
Content-Length: 19
Expect: 100-continue

first %TESTNUMBER contents
PUT /two/first%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: %TESTNUMBER
Content-Length: 19
Expect: 100-continue

first %TESTNUMBER contents
PUT /one/second%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: %TESTNUMBER
Content-Length: 20
Expect: 100-continue

second %TESTNUMBER contents
PUT /two/second%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Testno: %TESTNUMBER
Content-Length: 20
Expect: 100-continue

second %TESTNUMBER contents
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test493.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<testcase>
<info>
<keywords>
HSTS
url_effective
</keywords>
</info>

<reply>

# we use this as response to a CONNECT
<data nocheck="yes">
HTTP/1.1 403 not OK at all
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Funny-head: yesyes

-foo-
</data>
</reply>

<client>
<server>
http
</server>
<features>
HSTS
</features>

<file name="log/input493">
.hsts.example "20311001 04:47:41"
</file>

<name>
HSTS and %{url_effective} after upgrade
</name>
<command>
-x http://%HOSTIP:%HTTPPORT http://this.hsts.example/493 --hsts log/input493 -w '%{url_effective}\n'
</command>
</client>

<verify>
# we let it CONNECT to the server to confirm HSTS but deny from there
<protocol>
CONNECT this.hsts.example:443 HTTP/1.1
Host: this.hsts.example:443
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
https://this.hsts.example/493
</stdout>
# Proxy CONNECT aborted
<errorcode>
56
</errorcode>
</verify>
</testcase>













|

















|







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<testcase>
<info>
<keywords>
HSTS
url_effective
</keywords>
</info>

<reply>

# we use this as response to a CONNECT
<data nocheck="yes">
HTTP/1.1 403 not OK at all
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Funny-head: yesyes

-foo-
</data>
</reply>

<client>
<server>
http
</server>
<features>
HSTS
</features>

<file name="log/input%TESTNUMBER">
.hsts.example "20311001 04:47:41"
</file>

<name>
HSTS and %{url_effective} after upgrade
</name>
<command>
-x http://%HOSTIP:%HTTPPORT http://this.hsts.example/%TESTNUMBER --hsts log/input%TESTNUMBER -w '%{url_effective}\n'
</command>
</client>

<verify>
# we let it CONNECT to the server to confirm HSTS but deny from there
<protocol>
CONNECT this.hsts.example:443 HTTP/1.1
Host: this.hsts.example:443
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
https://this.hsts.example/%TESTNUMBER
</stdout>
# Proxy CONNECT aborted
<errorcode>
56
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test5.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/5#5 -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/5 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>













|

















|










|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER#5 -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test50.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../../moo.html/500002
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../../moo.html/500002
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with ../../
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/50 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/50 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/moo.html/500002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../../moo.html/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../../moo.html/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with ../../
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/moo.html/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test500.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
lib500
</tool>

 <name>
simple libcurl HTTP GET tool
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/500 log/ip500
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip500">
IP: %HOSTIP
</file>
<protocol>
GET /500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|






|



|






34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
lib500
</tool>

 <name>
simple libcurl HTTP GET tool
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER log/ip%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip%TESTNUMBER">
IP: %HOSTIP
</file>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test501.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
none
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib501
</tool>

 <name>
simple libcurl attempt operation without URL set
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/501
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|






|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
none
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
simple libcurl attempt operation without URL set
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test502.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Client-side
<client>
<server>
file
</server>
# tool is what to use instead of 'curl'
<tool>
lib502
</tool>

 <name>
simple multi file:// get
 </name>
 <command>
file://%PWD/log/test502.txt
</command>
<file name="log/test502.txt">
foo
   bar swsclose
bar
   foo
moo
</file>
</client>







|






|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Client-side
<client>
<server>
file
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
simple multi file:// get
 </name>
 <command>
file://%PWD/log/test%TESTNUMBER.txt
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar swsclose
bar
   foo
moo
</file>
</client>
Changes to jni/curl/tests/data/test503.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
</servercmd>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

</data>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

</datacheck>
</reply>

# Client-side
<client>
<server>
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib503
</tool>
<features>
proxy
</features>
 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://machine.503:%HTTPPORT/503 %HOSTIP:%PROXYPORT
</command>
<file name="log/test503.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT machine.503:%HTTPPORT HTTP/1.1
Host: machine.503:%HTTPPORT
Proxy-Authorization: Basic dGVzdDppbmc=
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /503 HTTP/1.1
Host: machine.503:%HTTPPORT
Authorization: Basic dGVzdDppbmc=
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>







|









|















|








|

|











|
|





|
|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
</servercmd>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

</data>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"

</datacheck>
</reply>

# Client-side
<client>
<server>
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
<features>
proxy
</features>
 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://machine.%TESTNUMBER:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
</command>
<file name="log/test%TESTNUMBER.txt">
foo
   bar
bar
   foo
moo
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT machine.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: machine.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: Basic dGVzdDppbmc=
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: machine.%TESTNUMBER:%HTTPPORT
Authorization: Basic dGVzdDppbmc=
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test504.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</server>
<features>
http
proxy
</features>
# tool is what to use instead of 'curl'
<tool>
lib504
</tool>

 <name>
simple multi through local proxy without listener
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/504 %HOSTIP:%NOLISTENPORT
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>







|






|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</server>
<features>
http
proxy
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
simple multi through local proxy without listener
 </name>
 <command>
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER %HOSTIP:%NOLISTENPORT
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>
Changes to jni/curl/tests/data/test505.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib505
</tool>

 <name>
FTP upload with rename after transfer
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/505 log/upload505
</command>
<file name="log/upload505">
Contents
of
a file
to verify
ftp
upload








|






|

|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
FTP upload with rename after transfer
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Contents
of
a file
to verify
ftp
upload

53
54
55
56
57
58
59
60
61
62
63
64
65
66
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR 505
RNFR 505
RNTO 505-forreal
QUIT
</protocol>
</verify>
</testcase>







|
|
|




53
54
55
56
57
58
59
60
61
62
63
64
65
66
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR %TESTNUMBER
RNFR %TESTNUMBER
RNTO %TESTNUMBER-forreal
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test506.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Set-Cookie: test1=one; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: test2=two; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: test3=three; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Content-Length: 29

run 1: set cookie 1, 2 and 3
</data1>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:01 GMT
Server: test-server/fake
Content-Type: text/html
Set-Cookie: test4=four; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: test5=five; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Content-Length: 26

run 2: set cookie 4 and 5
</data2>
<data3>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:02 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test4=overwritten4; domain=host.foo.com; expires=Sat May 5 GMT 11:56:27 2035
Set-Cookie: test1=overwritten1; domain=foo.com; expires=Thu Mar 3 GMT 11:56:27 2033
Set-Cookie: test6=six; domain=.www.host.foo.com; expires=Thu Mar 3 GMT 11:56:27 2033
Set-Cookie: test6=six_more; expires=Thu Mar 3 GMT 11:56:27 2033







|











|










|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</keywords>
</info>

# Server-side
<reply>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Set-Cookie: test1=one; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: test2=two; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: test3=three; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Content-Length: 29

run 1: set cookie 1, 2 and 3
</data1>
<data2>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:01 GMT
Server: test-server/fake
Content-Type: text/html
Set-Cookie: test4=four; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: test5=five; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Content-Length: 26

run 2: set cookie 4 and 5
</data2>
<data3>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:02 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test4=overwritten4; domain=host.foo.com; expires=Sat May 5 GMT 11:56:27 2035
Set-Cookie: test1=overwritten1; domain=foo.com; expires=Thu Mar 3 GMT 11:56:27 2033
Set-Cookie: test6=six; domain=.www.host.foo.com; expires=Thu Mar 3 GMT 11:56:27 2033
Set-Cookie: test6=six_more; expires=Thu Mar 3 GMT 11:56:27 2033
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
<tool>
lib506
</tool>
<command>
http://%HOSTIP:%HTTPPORT/506
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
GLOBAL_INIT







|


|







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout>
GLOBAL_INIT
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
lock:   share  [Pigs in space]: 96
unlock: share  [Pigs in space]: 97
SHARE_CLEANUP
lock:   share  [Pigs in space]: 98
unlock: share  [Pigs in space]: 99
GLOBAL_CLEANUP
</stdout>
<file name="log/jar506" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

www.host.foo.com	FALSE	/	FALSE	1993463787	test6	six_more
.www.host.foo.com	TRUE	/	FALSE	1993463787	test6	six
.host.foo.com	TRUE	/	FALSE	1896263787	test5	five







|







229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
lock:   share  [Pigs in space]: 96
unlock: share  [Pigs in space]: 97
SHARE_CLEANUP
lock:   share  [Pigs in space]: 98
unlock: share  [Pigs in space]: 99
GLOBAL_CLEANUP
</stdout>
<file name="log/jar%TESTNUMBER" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

www.host.foo.com	FALSE	/	FALSE	1993463787	test6	six_more
.www.host.foo.com	TRUE	/	FALSE	1993463787	test6	six
.host.foo.com	TRUE	/	FALSE	1896263787	test5	five
Changes to jni/curl/tests/data/test507.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
http
</server>
<name>
multi interface get with non-existing host name
</name>
<tool>
lib507
</tool>
<command>
http://non-existing-host.haxx.se/
</command>
</client>

# Verify data after the test has been "shot"







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
http
</server>
<name>
multi interface get with non-existing host name
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
http://non-existing-host.haxx.se/
</command>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test508.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<testcase>
<info>
<keywords>
HTTP
POST
POST callback
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib508
</tool>

 <name>
send HTTP POST using read callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/508
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
# remove CR that CURLOPT_TRANSFERTEXT added, when CharConv enabled:
s/^(this is what we post to the silly web server)\r\n/$1\n/ if($has_charconv)
</strippart>
<protocol>
POST /508 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 45
Content-Type: application/x-www-form-urlencoded

this is what we post to the silly web server
</protocol>
</verify>
</testcase>













|















|






|











|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<testcase>
<info>
<keywords>
HTTP
POST
POST callback
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
send HTTP POST using read callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
# remove CR that CURLOPT_TRANSFERTEXT added, when CharConv enabled:
s/^(this is what we post to the silly web server)\r\n/$1\n/ if($has_charconv)
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 45
Content-Type: application/x-www-form-urlencoded

this is what we post to the silly web server
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test509.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
none
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib509
</tool>

<name>
initialization with memory callbacks and actual usage
</name>
<command>
nothing







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
none
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

<name>
initialization with memory callbacks and actual usage
</name>
<command>
nothing
Changes to jni/curl/tests/data/test51.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../../../../../../../510002
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../../../../../../../510002
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with excessive ../
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/51 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/51 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /510002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ../../../../../../../%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ../../../../../../../%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with excessive ../
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test510.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib510
</tool>

 <name>
send HTTP POST using read callback, using chunked transfer-encoding
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/510
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /510 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

3







|















|






|







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
send HTTP POST using read callback, using chunked transfer-encoding
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

3
Changes to jni/curl/tests/data/test511.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib511
</tool>

 <name>
FTP with FILETIME and NOBODY but missing file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/511
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# CURLE_REMOTE_FILE_NOT_FOUND
<errorcode>
78
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM 511
QUIT
</protocol>
</verify>
</testcase>







|






|














|




17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
FTP with FILETIME and NOBODY but missing file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# CURLE_REMOTE_FILE_NOT_FOUND
<errorcode>
78
</errorcode>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
MDTM %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test512.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: yes
Connection: close

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib512
</tool>

 <name>
simple curl_easy_duplicate() test
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/512
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /512 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>













|














|






|







|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: yes
Connection: close

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
simple curl_easy_duplicate() test
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test513.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib513
</tool>

 <name>
send HTTP POST using read callback that returns CURL_READFUNC_ABORT
 </name>
# the 1s post-command delay helps to prevent a spurious failure on s390
 <command delay="1">
http://%HOSTIP:%HTTPPORT/513
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /513 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

</protocol>
# 42 - aborted by callback







|







|







|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
send HTTP POST using read callback that returns CURL_READFUNC_ABORT
 </name>
# the 1s post-command delay helps to prevent a spurious failure on s390
 <command delay="1">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 1
Content-Type: application/x-www-form-urlencoded

</protocol>
# 42 - aborted by callback
Changes to jni/curl/tests/data/test514.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP HEAD
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib514
</tool>
 <name>
First set options to POST and then to make HEAD
 </name>
# the 1s post-command delay helps to prevent a spurious failure on s390
 <command delay="1">
http://%HOSTIP:%HTTPPORT/514
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /514 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>












|



















|






|







|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP HEAD
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
First set options to POST and then to make HEAD
 </name>
# the 1s post-command delay helps to prevent a spurious failure on s390
 <command delay="1">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
HEAD /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test515.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib515
</tool>

 <name>
make a POSTFIELDS set to NULL with POSTFIELDSIZE set to zero
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/515
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /515 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

</protocol>
</verify>
</testcase>












|














|






|







|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
make a POSTFIELDS set to NULL with POSTFIELDSIZE set to zero
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test516.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib516
</tool>

 <name>
make a HTTPPOST set to NULL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/516
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /516 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>













|














|






|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
make a HTTPPOST set to NULL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test517.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Client-side
<client>
<server>
none
</server>
# tool is what to use instead of 'curl'
<tool>
lib517
</tool>

 <name>
curl_getdate() testing
 </name>
 <command>
nothing







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Client-side
<client>
<server>
none
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
curl_getdate() testing
 </name>
 <command>
nothing
Changes to jni/curl/tests/data/test518.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
http
</server>
<features>
getrlimit
</features>
# tool is what to use instead of 'curl'
<tool>
lib518
</tool>
# precheck is a command line to run before the test, to see if we can execute
# the test or not
<precheck>
./libtest/lib518 check
</precheck>

 <name>
HTTP GET with more than FD_SETSIZE descriptors open
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/518
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /518 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<valgrind>
disable
</valgrind>
</verify>
</testcase>







|




|






|







|









31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
http
</server>
<features>
getrlimit
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
# precheck is a command line to run before the test, to see if we can execute
# the test or not
<precheck>
./libtest/lib%TESTNUMBER check
</precheck>

 <name>
HTTP GET with more than FD_SETSIZE descriptors open
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<valgrind>
disable
</valgrind>
</verify>
</testcase>
Changes to jni/curl/tests/data/test519.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 8

content
</data>
<data1>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9

content2
</data1>
<datacheck>
HTTP/1.1 200 OK swsbounce
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 8

content
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9

content2
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib519
</tool>

 <name>
GET same URL twice with different users
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/519
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /519 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA==
Accept: */*

GET /519 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ==
Accept: */*

</protocol>
</verify>
</testcase>













|







|







|





|














|






|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 8

content
</data>
<data1>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9

content2
</data1>
<datacheck>
HTTP/1.1 200 OK swsbounce
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 8

content
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 9

content2
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
GET same URL twice with different users
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA==
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ==
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test52.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ./520002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ./520002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with ./-prefix
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/52 -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/52 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/twits/520002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>













|
|






|






|
|




|
















|







|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: ./%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: ./%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP follow redirect with ./-prefix
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/%TESTNUMBER -L
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/are/all/twits/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /we/are/all/twits/%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test521.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#
# Client-side
<client>
<server>
ftp
</server>
<tool>
lib521
</tool>
 <name>
FTP dir list PASV with CURLOPT_PORT
 </name>
 <command>
ftp://%HOSTIP/521/ %FTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER xxx
PASS yyy
PWD
CWD 521
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>







|





|










|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#
# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP dir list PASV with CURLOPT_PORT
 </name>
 <command>
ftp://%HOSTIP/%TESTNUMBER/ %FTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER xxx
PASS yyy
PWD
CWD %TESTNUMBER
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test522.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<tool>
lib521
</tool>
 <name>
HTTP GET with CURLOPT_PORT
 </name>
 <command>
http://%HOSTIP/522 %HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /522 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic eHh4Onl5eQ==
Accept: */*

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>







|







|










32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<tool>
lib521
</tool>
 <name>
HTTP GET with CURLOPT_PORT
 </name>
 <command>
http://%HOSTIP/%TESTNUMBER %HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic eHh4Onl5eQ==
Accept: */*

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test523.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib523
</tool>
 <name>
HTTP GET with proxy and CURLOPT_PORT
 </name>
# first URL then proxy
 <command>
http://www.example.com:999/523 http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://www.example.com:19999/523 HTTP/1.1
Host: www.example.com:19999
Authorization: Basic eHh4Onl5eQ==
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>







|

















|






|










|











10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
HTTP GET with proxy and CURLOPT_PORT
 </name>
# first URL then proxy
 <command>
http://www.example.com:999/%TESTNUMBER http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://www.example.com:19999/%TESTNUMBER HTTP/1.1
Host: www.example.com:19999
Authorization: Basic eHh4Onl5eQ==
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test524.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#
# Client-side
<client>
<server>
ftp
</server>
<tool>
lib524
</tool>
 <name>
FTP upload with target URL ending with slash
 </name>
# first URL then proxy
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/







|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#
# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP upload with target URL ending with slash
 </name>
# first URL then proxy
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/
Changes to jni/curl/tests/data/test525.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib525
</tool>
 <name>
FTP PORT upload using multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/525 log/upload525
</command>
<file name="log/upload525">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
PORT 127,0,0,1,5,109
TYPE I
STOR 525
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>







|





|

|



















|








16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP PORT upload using multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
PORT 127,0,0,1,5,109
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test526.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib526
</tool>
 <name>
FTP RETR same file using different handles but same connection
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/526
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 526
RETR 526
EPSV
SIZE 526
RETR 526
EPSV
SIZE 526
RETR 526
EPSV
SIZE 526
RETR 526
QUIT
</protocol>
</verify>
</testcase>







|





|












|
|

|
|

|
|

|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP RETR same file using different handles but same connection
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test527.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib527
</tool>
 <name>
FTP RETR same file using different handles but same connection
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/527
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 527
RETR 527
EPSV
SIZE 527
RETR 527
EPSV
SIZE 527
RETR 527
EPSV
SIZE 527
RETR 527
QUIT
</protocol>
</verify>
</testcase>







|





|












|
|

|
|

|
|

|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP RETR same file using different handles but same connection
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test528.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data>
<datacheck>
file contents should appear once for each file













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 47

file contents should appear once for each file
</data>
<datacheck>
file contents should appear once for each file
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47




48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<tool>
lib526
</tool>
 <name>
HTTP GET same file using different handles but same connection
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/528
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/528 HTTP/1.1




Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/528 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/528 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/528 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|






|
>
>
>
>



|



|
<
<
<
<






33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59




60
61
62
63
64
65
<tool>
lib526
</tool>
 <name>
HTTP GET same file using different handles but same connection
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /path/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /path/%TESTNUMBER HTTP/1.1




Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test529.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib529
</tool>
 <name>
FTP PORT upload using multi interface (weird cleanup function sequence)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/529 log/upload529
</command>
<file name="log/upload529">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
PORT 127,0,0,1,5,109
TYPE I
STOR 529
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>







|





|

|



















|








16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP PORT upload using multi interface (weird cleanup function sequence)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
PORT 127,0,0,1,5,109
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test53.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP, junk session cookies
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/53 -b log/injar53 -j
</command>
<file name="log/injar53">
%HOSTIP	FALSE	/	FALSE	2139150993	mooo	indeed
%HOSTIP	FALSE	/	FALSE	0		moo1	indeed
%HOSTIP	FALSE	/	FALSE	1		moo2	indeed
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/53 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: mooo=indeed

</protocol>
</verify>







|

|









|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
 <name>
HTTP, junk session cookies
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/%TESTNUMBER -b log/injar%TESTNUMBER -j
</command>
<file name="log/injar%TESTNUMBER">
%HOSTIP	FALSE	/	FALSE	2139150993	mooo	indeed
%HOSTIP	FALSE	/	FALSE	0		moo1	indeed
%HOSTIP	FALSE	/	FALSE	1		moo2	indeed
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: mooo=indeed

</protocol>
</verify>
Changes to jni/curl/tests/data/test531.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<tool>
lib525
</tool>
 <name>
FTP PORT upload using multi interface and get 425 response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/531 log/upload531
</command>
<file name="log/upload531">
Moooooooooooo
don't upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
PORT 127,0,0,1,5,109
TYPE I
STOR 531
QUIT
</protocol>

</verify>
</testcase>







|

|



















|





25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<tool>
lib525
</tool>
 <name>
FTP PORT upload using multi interface and get 425 response
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo
don't upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
PORT 127,0,0,1,5,109
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>

</verify>
</testcase>
Changes to jni/curl/tests/data/test532.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib532
</tool>
 <name>
FTP RETR same file using reset handles between each transfer
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/532
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 532
RETR 532
EPSV
SIZE 532
RETR 532
EPSV
SIZE 532
RETR 532
EPSV
SIZE 532
RETR 532
QUIT
</protocol>
</verify>
</testcase>







|





|












|
|

|
|

|
|

|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP RETR same file using reset handles between each transfer
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test533.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib533
</tool>
 <name>
FTP RETR a non-existing file twice using the multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/533 ftp://%HOSTIP:%FTPPORT/path/533
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 533
RETR 533
EPSV
SIZE 533
RETR 533
QUIT
</protocol>
</verify>
</testcase>







|





|












|
|

|
|




21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP RETR a non-existing file twice using the multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test534.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<tool>
lib533
</tool>
 <name>
FTP RETR twice using multi: non-existing host and non-existing file
 </name>
 <command>
ftp://non-existing-host.haxx.se/path/534 ftp://%HOSTIP:%FTPPORT/path/534
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 534
RETR 534
QUIT
</protocol>
</verify>
</testcase>







|












|
|




28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<tool>
lib533
</tool>
 <name>
FTP RETR twice using multi: non-existing host and non-existing file
 </name>
 <command>
ftp://non-existing-host.haxx.se/path/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test535.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
</keywords>
</info>

<reply>
<data>
HTTP/1.1 404 Badness
Date: Thu, 09 Nov 2010 14:49:00 GMT
ETag: "21025-dc7-39462498"
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes

hejsan
</data>
<data1>
HTTP/1.1 200 Fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 13
Connection: close
Content-Type: text/html

fine content
</data1>













|









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
</keywords>
</info>

<reply>
<data>
HTTP/1.1 404 Badness
Date: Tue, 09 Nov 2010 14:49:00 GMT
ETag: "21025-dc7-39462498"
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes

hejsan
</data>
<data1>
HTTP/1.1 200 Fine
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 13
Connection: close
Content-Type: text/html

fine content
</data1>

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
lib533
</tool>

 <name>
HTTP GET multi two files with FAILONERROR
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/535 http://%HOSTIP:%HTTPPORT/5350001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /535 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /5350001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|







|



|






44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
lib533
</tool>

 <name>
HTTP GET multi two files with FAILONERROR
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test537.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
http
</server>
<features>
getrlimit
</features>
# tool is what to use instead of 'curl'
<tool>
lib537
</tool>
# precheck is a command line to run before the test, to see if we can execute
# the test or not
<precheck>
./libtest/lib537 check
</precheck>

 <name>
HTTP GET with a HUGE number of file descriptors open
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/537
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /537 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|




|






|







|






31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
http
</server>
<features>
getrlimit
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
# precheck is a command line to run before the test, to see if we can execute
# the test or not
<precheck>
./libtest/lib%TESTNUMBER check
</precheck>

 <name>
HTTP GET with a HUGE number of file descriptors open
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test538.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<tool>
lib504
</tool>
 <name>
FTP multi-interface download, failed login: PASS not valid
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/538
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<tool>
lib504
</tool>
 <name>
FTP multi-interface download, failed login: PASS not valid
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
# TEST_ERR_SUCCESS is errorcode 120
<verify>
<errorcode>
Changes to jni/curl/tests/data/test539.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib539
</tool>

 <name>
Two FTP fetches using different CURLOPT_FTP_FILEMETHOD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/the/file/539
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path/to/the/file
EPSV
TYPE I
SIZE 539
RETR 539
SYST
CWD /
EPSV
TYPE A
LIST path/to/the/file/539.
QUIT
</protocol>
</verify>
</testcase>







|






|













|
|




|




33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Two FTP fetches using different CURLOPT_FTP_FILEMETHOD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/the/file/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path/to/the/file
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
SYST
CWD /
EPSV
TYPE A
LIST path/to/the/file/%TESTNUMBER.
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test54.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
HTTP with blank Location:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/54 -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/54 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
HTTP with blank Location:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -L
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test540.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib540
</tool>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest multi API re-using connection
 </name>
 <command>
http://test.remote.example.com/path/540 http://%HOSTIP:%HTTPPORT silly:person custom.set.host.name
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.example.com/path/540 HTTP/1.1
Host: custom.set.host.name
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/540 HTTP/1.1
Host: custom.set.host.name
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/540 HTTP/1.1
Host: custom.set.host.name
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/540 HTTP/1.1
Host: custom.set.host.name
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"
Accept: */*
Proxy-Connection: Keep-Alive

[DISCONNECT]
</protocol>
</verify>
</testcase>







|










|






|




|

|



|




|

|







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest multi API re-using connection
 </name>
 <command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT silly:person custom.set.host.name
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: custom.set.host.name
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: custom.set.host.name
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/%TESTNUMBER", response="ca507dcf189196b6a5374d3233042261"
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: custom.set.host.name
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: custom.set.host.name
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/%TESTNUMBER", response="ca507dcf189196b6a5374d3233042261"
Accept: */*
Proxy-Connection: Keep-Alive

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test541.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib541
</tool>

 <name>
FTP upload and upload same file again without rewind
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/541 log/upload541
</command>
<file name="log/upload541">
Contents
of
a file
to verify
ftp
upload








|






|

|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
FTP upload and upload same file again without rewind
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Contents
of
a file
to verify
ftp
upload

44
45
46
47
48
49
50
51
52
53
54
55
56
57
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR 541
EPSV
STOR 541
QUIT
</protocol>
</verify>
</testcase>







|

|




44
45
46
47
48
49
50
51
52
53
54
55
56
57
</upload>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
STOR %TESTNUMBER
EPSV
STOR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test542.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib542
</tool>
 <name>
FTP a file with NOBODY yes and HEADER no
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/542
</command>

</client>

# Verify data after the test has been "shot"
#
# There's no MTDM in the protocol here since this code doesn't ask for the
# time/date of the file
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
TYPE I
SIZE 542
REST 0
QUIT
</protocol>
</verify>
</testcase>







|





|














|





24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP a file with NOBODY yes and HEADER no
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>

</client>

# Verify data after the test has been "shot"
#
# There's no MTDM in the protocol here since this code doesn't ask for the
# time/date of the file
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
TYPE I
SIZE %TESTNUMBER
REST 0
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test543.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Client-side
<client>
<server>
none
</server>
<tool>
lib543
</tool>
 <name>
curl_easy_escape
 </name>
 <command>
-
</command>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Client-side
<client>
<server>
none
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
curl_easy_escape
 </name>
 <command>
-
</command>
Changes to jni/curl/tests/data/test544.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib544
</tool>

 <name>
HTTP POST text data using CURLOPT_COPYPOSTFIELDS
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/544
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /544 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 4
Content-Type: application/x-www-form-urlencoded

This
</protocol>
</verify>
</testcase>













|














|






|







|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP POST text data using CURLOPT_COPYPOSTFIELDS
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 4
Content-Type: application/x-www-form-urlencoded

This
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test545.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test546.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<tool>
lib533
</tool>
 <name>
FTP RETR a non-existing file then a found one using the multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/546 ftp://%HOSTIP:%FTPPORT/path/546
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 546
RETR 546
EPSV
SIZE 546
RETR 546
QUIT
</protocol>
<stdout>
data
    to
      see
that FTP







|












|
|

|
|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<tool>
lib533
</tool>
 <name>
FTP RETR a non-existing file then a found one using the multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
EPSV
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
<stdout>
data
    to
      see
that FTP
Changes to jni/curl/tests/data/test547.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib547
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/547 http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/547 HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/547 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://test.remote.example.com/path/547 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>
</verify>
</testcase>







|


















|









|







|







|











68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib%TESTNUMBER
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test548.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib548
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/548 http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/548 HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/548 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://test.remote.example.com/path/548 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>
</verify>
</testcase>







|


















|









|







|







|











68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib%TESTNUMBER
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test549.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
http
</server>
<features>
ftp
proxy
</features>
<tool>
lib549
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE
 </name>
# first URL then proxy
 <command>
ftp://www.example.com/moo/549 http://%HOSTIP:%HTTPPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://www.example.com/moo/549;type=i HTTP/1.1
Host: www.example.com:21
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>







|






|







|










31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
http
</server>
<features>
ftp
proxy
</features>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE
 </name>
# first URL then proxy
 <command>
ftp://www.example.com/moo/%TESTNUMBER http://%HOSTIP:%HTTPPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://www.example.com/moo/%TESTNUMBER;type=i HTTP/1.1
Host: www.example.com:21
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test55.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: 550002
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: 550002
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</datacheck>
</reply>

<client>
<server>
http
</server>
 <name>
HTTP follow redirect with single slash in path
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/55 -L
</command>
</client>

<verify>
<protocol>
GET /55 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /550002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>











|
|





|






|
|



|














|





|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: %TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: %TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:50:00 GMT
Connection: close

body
</datacheck>
</reply>

<client>
<server>
http
</server>
 <name>
HTTP follow redirect with single slash in path
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -L
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test550.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
lib549
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE and ASCII transfer
 </name>
# first URL then proxy
 <command>
ftp://www.example.com/moo/550 http://%HOSTIP:%HTTPPORT ascii
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://www.example.com/moo/550;type=a HTTP/1.1
Host: www.example.com:21
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>







|







|










38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
lib549
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE and ASCII transfer
 </name>
# first URL then proxy
 <command>
ftp://www.example.com/moo/%TESTNUMBER http://%HOSTIP:%HTTPPORT ascii
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://www.example.com/moo/%TESTNUMBER;type=a HTTP/1.1
Host: www.example.com:21
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test551.
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest with POST data from read callback
 </name>
 <command>
http://test.remote.example.com/path/551 http://%HOSTIP:%HTTPPORT s1lly:pers0n
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/551 HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/551 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/551", response="3325240726fbdaf1e61f3a0dd40b930c"
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>







|






|







|

|







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest with POST data from read callback
 </name>
 <command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT s1lly:pers0n
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/%TESTNUMBER", response="3325240726fbdaf1e61f3a0dd40b930c"
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>
Changes to jni/curl/tests/data/test552.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib552
</tool>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest with 70K POST data from read callback
 </name>
 <command>
http://test.remote.example.com/path/552 http://s1lly:pers0n@%HOSTIP:%HTTPPORT/
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST http://test.remote.example.com/path/552 HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 70000
Content-Type: application/x-www-form-urlencoded

%repeat[7000 x test data%00]%POST http://test.remote.example.com/path/552 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/552", response="be7aedc47d821b6d847c445ded782c43"
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 70000
Content-Type: application/x-www-form-urlencoded

%repeat[7000 x test data%00]%
</protocol>







|










|






|






|

|







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib%TESTNUMBER
</tool>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest with 70K POST data from read callback
 </name>
 <command>
http://test.remote.example.com/path/%TESTNUMBER http://s1lly:pers0n@%HOSTIP:%HTTPPORT/
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 70000
Content-Type: application/x-www-form-urlencoded

%repeat[7000 x test data%00]%POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/%TESTNUMBER", response="be7aedc47d821b6d847c445ded782c43"
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 70000
Content-Type: application/x-www-form-urlencoded

%repeat[7000 x test data%00]%
</protocol>
Changes to jni/curl/tests/data/test553.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib553
</tool>
<features>
</features>
 <name>
HTTP post with huge request headers and post data from callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/553
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /path/553 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Header0: %repeat[5000 x A]%
Header1: %repeat[5000 x A]%
Header2: %repeat[5000 x A]%
Header3: %repeat[5000 x A]%
Header4: %repeat[5000 x A]%







|







|






|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib%TESTNUMBER
</tool>
<features>
</features>
 <name>
HTTP post with huge request headers and post data from callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/path/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /path/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Header0: %repeat[5000 x A]%
Header1: %repeat[5000 x A]%
Header2: %repeat[5000 x A]%
Header3: %repeat[5000 x A]%
Header4: %repeat[5000 x A]%
Changes to jni/curl/tests/data/test554.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib554
</tool>

 <name>
HTTP multi-part formpost using read callback for the file part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/554
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /554 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 744
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"













|








|






|















|






|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP multi-part formpost using read callback for the file part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 744
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
send
------------------------------
Content-Disposition: form-data; name="somename"; filename="somefile.txt"
Content-Type: text/plain

blah blah
--------------------------------
POST /554 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 758
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2"







|







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
send
------------------------------
Content-Disposition: form-data; name="somename"; filename="somefile.txt"
Content-Type: text/plain

blah blah
--------------------------------
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 758
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2"
Changes to jni/curl/tests/data/test555.
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib555
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback multi-if
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/555 http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/555 HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/555 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://test.remote.example.com/path/555 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>
</verify>
</testcase>







|


















|









|







|







|











73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib%TESTNUMBER
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback multi-if
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

this is the blurb we want to upload
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test556.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib556
</tool>
 <name>
send and recv HTTP
 </name>
 <command>
http://%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /556 HTTP/1.2
Host: ninja

</protocol>
</verify>
</testcase>







|













|





21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
send and recv HTTP
 </name>
 <command>
http://%HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: ninja

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test557.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Client-side
<client>
<server>
none
</server>
# tool is what to use instead of 'curl'
<tool>
lib557
</tool>

<name>
curl_mprintf() testing
</name>
<command>
nothing







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Client-side
<client>
<server>
none
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

<name>
curl_mprintf() testing
</name>
<command>
nothing
Changes to jni/curl/tests/data/test558.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</server>
<features>
TrackMemory
ipv6
</features>
# tool is what to use instead of 'curl'
<tool>
lib558
</tool>

<name>
libtest memory tracking operational
</name>
<command>
nothing
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/memdump">
MEM easy.c: malloc()
MEM lib558.c: malloc()
MEM lib558.c: free()
MEM dynbuf.c: realloc()
MEM dynbuf.c: realloc()
MEM escape.c: free()
MEM easy.c: free()
</file>
<stripfile>
s/^MEM escape.c:\d+ free\(\(nil\)\)[\n]$//







|















|
|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</server>
<features>
TrackMemory
ipv6
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

<name>
libtest memory tracking operational
</name>
<command>
nothing
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/memdump">
MEM easy.c: malloc()
MEM lib%TESTNUMBER.c: malloc()
MEM lib%TESTNUMBER.c: free()
MEM dynbuf.c: realloc()
MEM dynbuf.c: realloc()
MEM escape.c: free()
MEM easy.c: free()
</file>
<stripfile>
s/^MEM escape.c:\d+ free\(\(nil\)\)[\n]$//
Changes to jni/curl/tests/data/test559.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
CURLOPT_BUFFERSIZE
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 2049
Connection: close
Content-Type: text/html
Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib559
</tool>

<name>
use tiny CURLOPT_BUFFERSIZE
</name>
<command>
http://%HOSTIP:%HTTPPORT/559
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
</verify>

</testcase>












|




















|






|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
CURLOPT_BUFFERSIZE
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 2049
Connection: close
Content-Type: text/html
Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

<name>
use tiny CURLOPT_BUFFERSIZE
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
</verify>

</testcase>
Changes to jni/curl/tests/data/test56.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
header "Transfer-Encoding: chunked"
#
# Set the user-agent using a short-option:
-A "%repeat[99999 x a]%"
#
 </stdin>
 <command>
-K - %HOSTIP:%HTTPPORT/that.site.com/56
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST /that.site.com/56 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: %repeat[99999 x a]%
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded

%if hyper







|






|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
header "Transfer-Encoding: chunked"
#
# Set the user-agent using a short-option:
-A "%repeat[99999 x a]%"
#
 </stdin>
 <command>
-K - %HOSTIP:%HTTPPORT/that.site.com/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
POST /that.site.com/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: %repeat[99999 x a]%
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded

%if hyper
Changes to jni/curl/tests/data/test560.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
<tool>
lib560
</tool>
 <name>
simple HTTPS GET with multi interface
 </name>
 <command>
https://%HOSTIP:%HTTPSPORT/560
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /560 HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
Accept: */*

</protocol>
</verify>
</testcase>







|

















|





|







|






8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 7

MooMoo
</data>
</reply>

#
# Client-side
<client>
<features>
SSL
</features>
<server>
https
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
simple HTTPS GET with multi interface
 </name>
 <command>
https://%HOSTIP:%HTTPSPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPSPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test561.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6

hello
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
lib549
</tool>
 <name>
FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i
 </name>
# first URL then proxy
 <command>
"ftp://www.example.com/moo/561;type=i" http://%HOSTIP:%HTTPPORT ascii
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://www.example.com/moo/561;type=i HTTP/1.1
Host: www.example.com:21
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>







|







|










39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
lib549
</tool>
 <name>
FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i
 </name>
# first URL then proxy
 <command>
"ftp://www.example.com/moo/%TESTNUMBER;type=i" http://%HOSTIP:%HTTPPORT ascii
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://www.example.com/moo/%TESTNUMBER;type=i HTTP/1.1
Host: www.example.com:21
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
<stdout>
hello
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test562.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib562
</tool>
 <name>
FTP a type=A URL and CURLOPT_PORT set
 </name>

# note that we need quotes around the URL below to make sure the shell doesn't
# treat the semicolon as a separator!
 <command>
'ftp://%HOSTIP:23456/562;type=A' %FTPPORT
</command>

</client>

# Verify data after the test has been "shot"
#
# There's no MTDM in the protocol here since this code doesn't ask for the
# time/date of the file
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
SIZE 562
RETR 562
QUIT
</protocol>
</verify>
</testcase>







|








|















<
|




16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

48
49
50
51
52

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP a type=A URL and CURLOPT_PORT set
 </name>

# note that we need quotes around the URL below to make sure the shell doesn't
# treat the semicolon as a separator!
 <command>
'ftp://%HOSTIP:23456/%TESTNUMBER;type=A' %FTPPORT
</command>

</client>

# Verify data after the test has been "shot"
#
# There's no MTDM in the protocol here since this code doesn't ask for the
# time/date of the file
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A

RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test563.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
FTP
CURLOPT_PORT
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 6

hello
</data>
</reply>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
FTP
CURLOPT_PORT
HTTP proxy
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 6

hello
</data>
</reply>
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</features>
<setenv>
ftp_proxy=http://%HOSTIP:%HTTPPORT/
</setenv>
# note that we need quotes around the URL below to make sure the shell doesn't
# treat the semicolon as a separator!
 <command>
"ftp://%HOSTIP:23456/563;type=A" %FTPPORT
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%FTPPORT/563;type=A HTTP/1.1
Host: %HOSTIP:%FTPPORT
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</features>
<setenv>
ftp_proxy=http://%HOSTIP:%HTTPPORT/
</setenv>
# note that we need quotes around the URL below to make sure the shell doesn't
# treat the semicolon as a separator!
 <command>
"ftp://%HOSTIP:23456/%TESTNUMBER;type=A" %FTPPORT
</command>

</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%FTPPORT/%TESTNUMBER;type=A HTTP/1.1
Host: %HOSTIP:%FTPPORT
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test564.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Client-side
<client>
<server>
ftp
socks4
</server>
<tool>
lib564
</tool>
 <name>
FTP RETR a file over a SOCKS proxy using the multi interface
 </name>
<command>
ftp://%HOSTIP:%FTPPORT/path/564 %HOSTIP:%SOCKSPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE 564
RETR 564
QUIT
</protocol>
<stdout>
data
    to
      see
that FTP
works
  so does it?
</stdout>
</verify>
</testcase>







|





|















|
|












26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Client-side
<client>
<server>
ftp
socks4
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP RETR a file over a SOCKS proxy using the multi interface
 </name>
<command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER %HOSTIP:%SOCKSPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
<stdout>
data
    to
      see
that FTP
works
  so does it?
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test565.
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
</server>
<features>
!SSPI
crypto
</features>
# tool is what to use instead of 'curl'
<tool>
lib565
</tool>

 <name>
send HTTP POST using read callback, chunked transfer-encoding and Digest
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/565
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /565 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded

0

POST /565 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/565", response="877424f750af047634dbd94f9933217b"
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

3
one







|






|







|







|

|







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
</server>
<features>
!SSPI
crypto
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
send HTTP POST using read callback, chunked transfer-encoding and Digest
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded

0

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="877424f750af047634dbd94f9933217b"
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

3
one
Changes to jni/curl/tests/data/test566.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib566
</tool>

 <name>
HTTP GET with CURLINFO_CONTENT_LENGTH_DOWNLOAD and 0 bytes transfer
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/566 log/ip566
</command>
</client> 

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip566">
CL: 0
</file>
<protocol>
GET /566 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>












|



















|






|






|



|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP GET with CURLINFO_CONTENT_LENGTH_DOWNLOAD and 0 bytes transfer
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER log/ip%TESTNUMBER
</command>
</client> 

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip%TESTNUMBER">
CL: 0
</file>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test567.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib567
</tool>

<name>
simple RTSP OPTIONS command
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/567
</command>
</client>

<verify>
<protocol>
OPTIONS rtsp://%HOSTIP:%RTSPPORT/567 RTSP/1.0
CSeq: 1
User-Agent: test567
Test-Number: 567

</protocol>
</verify>

</testcase>







|






|





|

|
|





21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
simple RTSP OPTIONS command
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER RTSP/1.0
CSeq: 1
User-Agent: test%TESTNUMBER
Test-Number: %TESTNUMBER

</protocol>
</verify>

</testcase>
Changes to jni/curl/tests/data/test568.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib568
</tool>

<name>
RTSP Announce (PUT and POST style) test
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/568
</command>
# file written before test command runs
<file name="log/file568.txt">
v=0
o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e=mjh@isi.edu (Mark Handley)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 3456 RTP/AVP 0
m=video 2232 RTP/AVP 31
</file>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/5680001 RTSP/1.0
CSeq: 1
Content-Length: 306
Content-Type: application/sdp

v=0
o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e=mjh@isi.edu (Mark Handley)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 3456 RTP/AVP 0
m=video 2232 RTP/AVP 31
DESCRIBE rtsp://%HOSTIP:%RTSPPORT/5680002 RTSP/1.0
CSeq: 2
Accept: application/sdp

ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/5680003 RTSP/1.0
CSeq: 3
Content-Type: posty goodness
Content-Length: 35

postyfield=postystuff&project=curl
OPTIONS rtsp://%HOSTIP:%RTSPPORT/5680004 RTSP/1.0
CSeq: 4

</protocol>
</verify>

</testcase>







|






|


|



















|















|



|





|






47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
RTSP Announce (PUT and POST style) test
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER
</command>
# file written before test command runs
<file name="log/file%TESTNUMBER.txt">
v=0
o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e=mjh@isi.edu (Mark Handley)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 3456 RTP/AVP 0
m=video 2232 RTP/AVP 31
</file>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0
CSeq: 1
Content-Length: 306
Content-Type: application/sdp

v=0
o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e=mjh@isi.edu (Mark Handley)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 3456 RTP/AVP 0
m=video 2232 RTP/AVP 31
DESCRIBE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0
CSeq: 2
Accept: application/sdp

ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0
CSeq: 3
Content-Type: posty goodness
Content-Length: 35

postyfield=postystuff&project=curl
OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0004 RTSP/1.0
CSeq: 4

</protocol>
</verify>

</testcase>
Changes to jni/curl/tests/data/test569.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib569
</tool>

<name>
RTSP Session ID parsing
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/569 log/idfile569.txt
</command>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
SETUP rtsp://%HOSTIP:%RTSPPORT/5690001 RTSP/1.0
CSeq: 1
Transport: Fake/NotReal/JustATest;foo=baz

TEARDOWN rtsp://%HOSTIP:%RTSPPORT/5690002 RTSP/1.0
CSeq: 2
Session: 00.+1-am-aSe55ion_id\$yes-i-am\$

SETUP rtsp://%HOSTIP:%RTSPPORT/5690003 RTSP/1.0
CSeq: 3
Transport: Fake/NotReal/JustATest;foo=baz

TEARDOWN rtsp://%HOSTIP:%RTSPPORT/5690004 RTSP/1.0
CSeq: 4
Session: \$extraspaces

SETUP rtsp://%HOSTIP:%RTSPPORT/5690005 RTSP/1.0
CSeq: 5
Transport: Fake/NotReal/JustATest;foo=baz

TEARDOWN rtsp://%HOSTIP:%RTSPPORT/5690006 RTSP/1.0
CSeq: 6
Session: A

</protocol>
<file name="log/idfile569.txt">
Got Session ID: [00.+1-am-aSe55ion_id\$yes-i-am\$]
Got Session ID: [\$extraspaces]
Got Session ID: [A]
</file>
</verify>

</testcase>







|






|








|



|



|



|



|



|




|







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
RTSP Session ID parsing
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER log/idfile%TESTNUMBER.txt
</command>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
SETUP rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0
CSeq: 1
Transport: Fake/NotReal/JustATest;foo=baz

TEARDOWN rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0
CSeq: 2
Session: 00.+1-am-aSe55ion_id\$yes-i-am\$

SETUP rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0
CSeq: 3
Transport: Fake/NotReal/JustATest;foo=baz

TEARDOWN rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0004 RTSP/1.0
CSeq: 4
Session: \$extraspaces

SETUP rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0005 RTSP/1.0
CSeq: 5
Transport: Fake/NotReal/JustATest;foo=baz

TEARDOWN rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0006 RTSP/1.0
CSeq: 6
Session: A

</protocol>
<file name="log/idfile%TESTNUMBER.txt">
Got Session ID: [00.+1-am-aSe55ion_id\$yes-i-am\$]
Got Session ID: [\$extraspaces]
Got Session ID: [A]
</file>
</verify>

</testcase>
Changes to jni/curl/tests/data/test57.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
HTTP content-type with spaces in
 </name>
 <command>
-w "%{content_type}\n" http://%HOSTIP:%HTTPPORT/57 -o log/out57
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout mode="text">
text/html; charset=ISO-8859-4
</stdout>
<protocol>
GET /57 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
http
</server>
 <name>
HTTP content-type with spaces in
 </name>
 <command>
-w "%{content_type}\n" http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/out%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<stdout mode="text">
text/html; charset=ISO-8859-4
</stdout>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test570.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib570
</tool>

<name>
RTSP CSeq and Session Mismatch checks
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/570
</command>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
OPTIONS rtsp://%HOSTIP:%RTSPPORT/5700001 RTSP/1.0
CSeq: 1

SETUP rtsp://%HOSTIP:%RTSPPORT/5700002 RTSP/1.0
CSeq: 999
Transport: RAW/RAW/UDP;unicast;client_port=3056-3057

PLAY rtsp://%HOSTIP:%RTSPPORT/5700003 RTSP/1.0
CSeq: 1000
Session: asdf

</protocol>
</verify>

</testcase>







|






|








|


|



|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
RTSP CSeq and Session Mismatch checks
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER
</command>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0
CSeq: 1

SETUP rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0
CSeq: 999
Transport: RAW/RAW/UDP;unicast;client_port=3056-3057

PLAY rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0
CSeq: 1000
Session: asdf

</protocol>
</verify>

</testcase>
Changes to jni/curl/tests/data/test571.
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib571
</tool>

<name>
RTSP RTP Interleaving Test
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/571 log/protofile571.txt
</command>
</client>

<verify>
<stdout>
RTP: message size 10, channel 1
RTP: message size 500, channel 0
RTP: message size 196, channel 0
RTP: message size 124, channel 0
RTP: message size 824, channel 0
RTP: message size 10, channel 1
RTP: message size 50, channel 0
RTP: message size 798, channel 0
RTP: message size 42, channel 0
RTP: message size 30, channel 1
RTP: message size 2048, channel 0
RTP: message size 85, channel 0
RTP: message size 24, channel 1
</stdout>

<file name="log/protofile571.txt">
$99
</file>
</verify>

</testcase>







|






|




















|





67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
RTSP RTP Interleaving Test
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER log/protofile%TESTNUMBER.txt
</command>
</client>

<verify>
<stdout>
RTP: message size 10, channel 1
RTP: message size 500, channel 0
RTP: message size 196, channel 0
RTP: message size 124, channel 0
RTP: message size 824, channel 0
RTP: message size 10, channel 1
RTP: message size 50, channel 0
RTP: message size 798, channel 0
RTP: message size 42, channel 0
RTP: message size 30, channel 1
RTP: message size 2048, channel 0
RTP: message size 85, channel 0
RTP: message size 24, channel 1
</stdout>

<file name="log/protofile%TESTNUMBER.txt">
$99
</file>
</verify>

</testcase>
Changes to jni/curl/tests/data/test572.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib572
</tool>

<name>
RTSP GET_PARAMETER (Put/Heartbeat/Post)
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/572
</command>
# file written before test command runs
<file name="log/file572.txt">
scale
speed
</file>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
SETUP rtsp://%HOSTIP:%RTSPPORT/5720001 RTSP/1.0
CSeq: 1
Transport: Planes/Trains/Automobiles

GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/5720002 RTSP/1.0
CSeq: 2
Session: getparams-test
Content-Length: 12
Content-Type: text/parameters

scale
speed
GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/5720003 RTSP/1.0
CSeq: 3
Session: getparams-test

GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/5720004 RTSP/1.0
CSeq: 4
Session: getparams-test
Content-Length: 24
Content-Type: text/parameters

packets_received
jitter
OPTIONS rtsp://%HOSTIP:%RTSPPORT/5720005 RTSP/1.0
CSeq: 5
Session: getparams-test

</protocol>
</verify>

</testcase>







|






|


|










|



|







|



|







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

# Client-Side
<client>
<server>
rtsp
</server>
<tool>
lib%TESTNUMBER
</tool>

<name>
RTSP GET_PARAMETER (Put/Heartbeat/Post)
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER
</command>
# file written before test command runs
<file name="log/file%TESTNUMBER.txt">
scale
speed
</file>
</client>

<verify>
<strip>
^If-Modified-Since:.*
</strip>
<protocol>
SETUP rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0
CSeq: 1
Transport: Planes/Trains/Automobiles

GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0
CSeq: 2
Session: getparams-test
Content-Length: 12
Content-Type: text/parameters

scale
speed
GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0
CSeq: 3
Session: getparams-test

GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0004 RTSP/1.0
CSeq: 4
Session: getparams-test
Content-Length: 24
Content-Type: text/parameters

packets_received
jitter
OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0005 RTSP/1.0
CSeq: 5
Session: getparams-test

</protocol>
</verify>

</testcase>
Changes to jni/curl/tests/data/test573.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
multi
flaky
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib573
</tool>

 <name>
verify connect time with multi interface
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/573
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /573 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>













|




















|






|






|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
multi
flaky
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
verify connect time with multi interface
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test574.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib574
</tool>
<name>
FTP wildcard download - changed fnmatch, 2x perform (Unix LIST response)
</name>
<command>
ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*.txt
</command>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
FTP wildcard download - changed fnmatch, 2x perform (Unix LIST response)
</name>
<command>
ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*.txt
</command>
Changes to jni/curl/tests/data/test575.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib575
</tool>
 <name>
FTP wildcard download - dup_handle and multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*
</command>







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP wildcard download - dup_handle and multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*
</command>
Changes to jni/curl/tests/data/test576.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib576
</tool>
 <name>
FTP wildcard download - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (Unix)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*
</command>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP wildcard download - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (Unix)
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*
</command>
Changes to jni/curl/tests/data/test577.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
lib567
</tool>

<name>
Funny RTSP version in response
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/577
</command>
</client>

<verify>
<protocol>
OPTIONS rtsp://%HOSTIP:%RTSPPORT/577 RTSP/1.0
CSeq: 1
User-Agent: test567
Test-Number: 567

</protocol>
# 8 == CURLE_WEIRD_SERVER_REPLY
<errorcode>







|





|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
lib567
</tool>

<name>
Funny RTSP version in response
</name>
<command>
rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER RTSP/1.0
CSeq: 1
User-Agent: test567
Test-Number: 567

</protocol>
# 8 == CURLE_WEIRD_SERVER_REPLY
<errorcode>
Changes to jni/curl/tests/data/test578.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib578
</tool>

 <name>
HTTP POST lower than MAX_INITIAL_POST_SIZE with progress callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/578 log/ip578
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip578">
PASSED, UL data matched data size
</file>
</verify>
</testcase>












|




















|






|






|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP POST lower than MAX_INITIAL_POST_SIZE with progress callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER log/ip%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip%TESTNUMBER">
PASSED, UL data matched data size
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test579.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
http
</server>
<features>
crypto
</features>
# tool is what to use instead of 'curl'
<tool>
lib579
</tool>

 <name>
small chunked HTTP POSTs with digest auth. and progress callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/579 log/ip579
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip579">
Progress callback called with UL 0 out of 0
Progress callback called with UL 8 out of 0
Progress callback called with UL 16 out of 0
Progress callback called with UL 26 out of 0
Progress callback called with UL 61 out of 0
Progress callback called with UL 66 out of 0
</file>







|






|






|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
http
</server>
<features>
crypto
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
small chunked HTTP POSTs with digest auth. and progress callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER log/ip%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip%TESTNUMBER">
Progress callback called with UL 0 out of 0
Progress callback called with UL 8 out of 0
Progress callback called with UL 16 out of 0
Progress callback called with UL 26 out of 0
Progress callback called with UL 61 out of 0
Progress callback called with UL 66 out of 0
</file>
Changes to jni/curl/tests/data/test58.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT from file with weird letters
</name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/ -T log/58te[]st.txt -g
</command>
<file name="log/58te[]st.txt">
a few bytes
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/58te%5B%5Dst.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 12
Expect: 100-continue

a few bytes
</protocol>
</verify>
</testcase>











|
















|

|







|










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT from file with weird letters
</name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/ -T log/%TESTNUMBERte[]st.txt -g
</command>
<file name="log/%TESTNUMBERte[]st.txt">
a few bytes
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /we/want/%TESTNUMBERte%5B%5Dst.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 12
Expect: 100-continue

a few bytes
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test580.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 eat this!
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: this-is-the-first.html
Content-Length: 0
Connection: close
Location: and there's a second one too! / moo.html

</data>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 eat this!
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: this-is-the-first.html
Content-Length: 0
Connection: close
Location: and there's a second one too! / moo.html

</data>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
lib507
</tool>

 <name>
multi interface, multiple Location: headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/580
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /580 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|






|






35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
lib507
</tool>

 <name>
multi interface, multiple Location: headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test581.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 all good!
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Connection: close
Content-Type: changed/my/mind

</data>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 all good!
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Connection: close
Content-Type: changed/my/mind

</data>
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
lib507
</tool>

 <name>
multi interface, multiple Content-Type: headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/581
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /581 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|






|






35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
lib507
</tool>

 <name>
multi interface, multiple Content-Type: headers
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test582.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# Client-side
<client>
<server>
sftp
</server>
<tool>
lib582
</tool>
 <name>
SFTP upload using multi interface
 </name>
 <command>
Sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload582.txt %PWD/log/file582.txt %USER:
</command>
<file name="log/file582.txt">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<valgrind>
disable
</valgrind>
<strip>
</strip>
<protocol>
</protocol>
<file name="log/file582.txt">
Moooooooooooo
 upload this
</file>
</verify>
</testcase>







|





|

|














|





14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# Client-side
<client>
<server>
sftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
SFTP upload using multi interface
 </name>
 <command>
Sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload%TESTNUMBER.txt %PWD/log/file%TESTNUMBER.txt %USER:
</command>
<file name="log/file%TESTNUMBER.txt">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<valgrind>
disable
</valgrind>
<strip>
</strip>
<protocol>
</protocol>
<file name="log/file%TESTNUMBER.txt">
Moooooooooooo
 upload this
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test583.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

# Client-side
<client>
<server>
sftp
</server>
<tool>
lib583
</tool>
 <name>
SFTP with multi interface, remove handle early
 </name>

# The command here uses 'localhost' just to make sure that curl_multi_perform
# won't reach too far in the first invoke. When using c-ares at least, the
# name resolve will cause it to return rather quickly and thus we could trigger
# the problem we're looking to verify.
 <command>
sftp://localhost:%SSHPORT%SSH_PWD/log/upload583.txt %USER:
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<valgrind>
disable







|










|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

# Client-side
<client>
<server>
sftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
SFTP with multi interface, remove handle early
 </name>

# The command here uses 'localhost' just to make sure that curl_multi_perform
# won't reach too far in the first invoke. When using c-ares at least, the
# name resolve will cause it to return rather quickly and thus we could trigger
# the problem we're looking to verify.
 <command>
sftp://localhost:%SSHPORT%SSH_PWD/log/upload%TESTNUMBER.txt %USER:
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<valgrind>
disable
Changes to jni/curl/tests/data/test584.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
<datacheck>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool to invoke
<tool>
lib584
</tool>

 <name>
CURLOPT_MIMEPOST first set then set to NULL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/584
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/--------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=------------------------/
</strippart>
<protocol>
POST /584 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 144
Content-Type: multipart/form-data; boundary=------------------------

--------------------------
Content-Disposition: form-data; name="fake"

party
----------------------------
POST /584 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>







|







|





|














|






|











|










|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
<datacheck>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool to invoke
<tool>
lib%TESTNUMBER
</tool>

 <name>
CURLOPT_MIMEPOST first set then set to NULL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/--------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 144
Content-Type: multipart/form-data; boundary=------------------------

--------------------------
Content-Disposition: form-data; name="fake"

party
----------------------------
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test585.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 eat this!
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: this-is-the-first.html
Content-Length: 0
Connection: close

</data>
<datacheck>
[OPEN] counter: 1
HTTP/1.1 302 eat this!
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: this-is-the-first.html
Content-Length: 0
Connection: close

[CLOSE] counter: 1
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib585
</tool>

 <name>
socket open/close callbacks
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/585
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /585 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|









|



















|






|






|






9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 302 eat this!
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: this-is-the-first.html
Content-Length: 0
Connection: close

</data>
<datacheck>
[OPEN] counter: 1
HTTP/1.1 302 eat this!
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: this-is-the-first.html
Content-Length: 0
Connection: close

[CLOSE] counter: 1
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
http
</features>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
socket open/close callbacks
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test586.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<tool>
lib585
</tool>
 <name>
FTP and open/close socket callbacks
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/586
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 586
RETR 586
QUIT
</protocol>
</verify>
</testcase>







|












|
|




34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<tool>
lib585
</tool>
 <name>
FTP and open/close socket callbacks
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test587.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib587
</tool>

 <name>
HTTP multi-part formpost with aborted read callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/587
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /587 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 744
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"







|






|











|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP multi-part formpost with aborted read callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 744
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"
Changes to jni/curl/tests/data/test588.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<tool>
lib525
</tool>
 <name>
FTP PORT upload using multi interface, EPRT doesn't work
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/588 log/upload588
</command>
<file name="log/upload588">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 588
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>







|

|




















|








31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<tool>
lib525
</tool>
 <name>
FTP PORT upload using multi interface, EPRT doesn't work
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<upload>
Moooooooooooo
 upload this
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test589.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib589
</tool>

 <name>
make a HTTP MIME POST set to NULL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/589
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /589 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>







|














|






|







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
make a HTTP MIME POST set to NULL
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test59.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

hej 
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP URL with slash but with "parameter"
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT?mooo/59"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?mooo/59 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>












|
















|







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

hej 
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP URL with slash but with "parameter"
 </name>
 <command>
"http://%HOSTIP:%HTTPPORT?mooo/%TESTNUMBER"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /?mooo/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test590.
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib590
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy offers Negotiate+NTLM, use only NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/590 http://%HOSTIP:%HTTPPORT
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>

<protocol>
GET http://test.remote.example.com/path/590 HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/590 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/590 HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAAIAAgAcgAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAAIWYOdZV0iKA8ytf+dU+Bz9TpMJ4mBKu221lY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|


















|










|




|





|








66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Client-side
<client>
<server>
http
</server>
# tool to use
<tool>
lib%TESTNUMBER
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy offers Negotiate+NTLM, use only NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>

<protocol>
GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Proxy-Connection: Keep-Alive

GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAAIAAgAcgAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAAIWYOdZV0iKA8ytf+dU+Bz9TpMJ4mBKu221lY3VybGhvc3Q=
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test591.
1
2
3
4
5
6
7
8
9
10
11
<testcase>
#
# For this test the server rejects the EPRT command,
# code in lib591 makes use of curl_multi_timeout()
# and server does not establish data connection.
#
<info>
<keywords>
FTP
PORT
STOR



|







1
2
3
4
5
6
7
8
9
10
11
<testcase>
#
# For this test the server rejects the EPRT command,
# code in lib%TESTNUMBER makes use of curl_multi_timeout()
# and server does not establish data connection.
#
<info>
<keywords>
FTP
PORT
STOR
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib591
</tool>
 <name>
FTP multi PORT and 425 on upload
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/591 %FTPTIME2 log/upload591
</command>
<file name="log/upload591">
Moooooooooooo for 591
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 591
QUIT
</protocol>
# CURLE_FTP_ACCEPT_FAILED = 10
<errorcode>
10
</errorcode>
<upload>
</upload>
</verify>
</testcase>







|





|

|
|



















|










27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP multi PORT and 425 on upload
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER %FTPTIME2 log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo for %TESTNUMBER
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
# CURLE_FTP_ACCEPT_FAILED = 10
<errorcode>
10
</errorcode>
<upload>
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test592.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<tool>
lib591
</tool>
 <name>
FTP multi PORT and 421 on upload
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/592 %FTPTIME2 log/upload592
</command>
<file name="log/upload592">
Moooooooooooo for 592
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
# a 421 response must prevent further commands from being sent
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 592
QUIT
</protocol>
# CURLE_FTP_ACCEPT_FAILED = 10
<errorcode>
10
</errorcode>
<upload>
</upload>
</verify>
</testcase>







|

|
|




















|










33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<tool>
lib591
</tool>
 <name>
FTP multi PORT and 421 on upload
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER %FTPTIME2 log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo for %TESTNUMBER
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
# a 421 response must prevent further commands from being sent
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
# CURLE_FTP_ACCEPT_FAILED = 10
<errorcode>
10
</errorcode>
<upload>
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test593.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<tool>
lib591
</tool>
 <name>
FTP multi PORT upload, no data conn and no transient neg. reply
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/593 %FTPTIME2 log/upload593
</command>
<file name="log/upload593">
Moooooooooooo for 593
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 593
QUIT
</protocol>
<errorcode>
12
</errorcode>
<upload>
</upload>
</verify>
</testcase>







|

|
|



















|









33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<tool>
lib591
</tool>
 <name>
FTP multi PORT upload, no data conn and no transient neg. reply
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER %FTPTIME2 log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo for %TESTNUMBER
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<errorcode>
12
</errorcode>
<upload>
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test594.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<tool>
lib591
</tool>
 <name>
FTP multi PORT upload, no data conn and no positive prelim. reply
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/594 %FTPTIME2 log/upload594
</command>
<file name="log/upload594">
Moooooooooooo for 594
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 594
QUIT
</protocol>
<errorcode>
28
</errorcode>
<upload>
</upload>
</verify>
</testcase>







|

|
|



















|









33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<tool>
lib591
</tool>
 <name>
FTP multi PORT upload, no data conn and no positive prelim. reply
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/%TESTNUMBER %FTPTIME2 log/upload%TESTNUMBER
</command>
<file name="log/upload%TESTNUMBER">
Moooooooooooo for %TESTNUMBER
 upload this
</file>
</client>

# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR %TESTNUMBER
QUIT
</protocol>
<errorcode>
28
</errorcode>
<upload>
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test595.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
lib585
</tool>

 <name>
verify close callbacks with passive FTP
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/595 log/ip595
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 595
RETR 595
QUIT
</protocol>
</verify>
</testcase>







|












|
|




32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
lib585
</tool>

 <name>
verify close callbacks with passive FTP
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER log/ip%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test596.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
lib585
</tool>

 <name>
verify close callbacks with active FTP
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/596 log/ip596 activeftp
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(EPRT \|1\|)(.*)/$1/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 596
RETR 596
QUIT
</protocol>
</verify>
</testcase>







|















|
|




32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
lib585
</tool>

 <name>
verify close callbacks with active FTP
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER log/ip%TESTNUMBER activeftp
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(EPRT \|1\|)(.*)/$1/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test597.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib597
</tool>
 <name>
FTP connect only option
 </name>

<command>
ftp://%HOSTIP:%FTPPORT







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib%TESTNUMBER
</tool>
 <name>
FTP connect only option
 </name>

<command>
ftp://%HOSTIP:%FTPPORT
Changes to jni/curl/tests/data/test598.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
</data>

# since the request runs twice
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib598
</tool>

 <name>
curl_easy_reset with referer and other strings set
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/598
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /598 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: the-moo agent next generation
Accept: */*
Referer: http://example.com/the-moo
Cookie: name=moo

GET /598 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>







|










|






|
















|






|







|






|






10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
</data>

# since the request runs twice
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
curl_easy_reset with referer and other strings set
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: the-moo agent next generation
Accept: */*
Referer: http://example.com/the-moo
Cookie: name=moo

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test599.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<testcase>
<info>
<keywords>
HTTP
HTTP POST
chunked Transfer-Encoding
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: 5990001
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Transfer-Encoding: chunked
Connection: close
Content-Type: text/html

32
this data is slightly larger than the first piece

0

</data1>

<datacheck>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: 5990001
Content-Length: 6
Connection: close
Content-Type: text/html

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Transfer-Encoding: chunked
Connection: close
Content-Type: text/html

this data is slightly larger than the first piece
</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib599
</tool>

# Bug 3510057 pointed out that when following a location to a larger chunked
# encoded page, the first size would still be used in the progress callback
 <name>
HTTP GET with progress callback and redirects changing content sizes
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/599 log/ip599
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip599">
CL: -1
</file>
</verify>
</testcase>













|

|








|














|

|





|

















|








|






|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<testcase>
<info>
<keywords>
HTTP
HTTP POST
chunked Transfer-Encoding
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: %TESTNUMBER0001
Content-Length: 6
Connection: close
Content-Type: text/html

-foo-
</data>
<data1>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Transfer-Encoding: chunked
Connection: close
Content-Type: text/html

32
this data is slightly larger than the first piece

0

</data1>

<datacheck>
HTTP/1.1 302 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: %TESTNUMBER0001
Content-Length: 6
Connection: close
Content-Type: text/html

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Transfer-Encoding: chunked
Connection: close
Content-Type: text/html

this data is slightly larger than the first piece
</datacheck>

</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

# Bug 3510057 pointed out that when following a location to a larger chunked
# encoded page, the first size would still be used in the progress callback
 <name>
HTTP GET with progress callback and redirects changing content sizes
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER log/ip%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/ip%TESTNUMBER">
CL: -1
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test6.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP set cookie
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
swsclose: booo

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with simple cookie send
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/6 -b "name=contents;name2=content2"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/that/page/6 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: name=contents;name2=content2

</protocol>
</verify>
</testcase>













|

















|






|



|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP set cookie
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
swsclose: booo

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with simple cookie send
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER -b "name=contents;name2=content2" -b name3=content3
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: name=contents;name2=content2;name3=content3

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test60.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
chunked Transfer-Encoding
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT from stdin with wrong content-length
</name>
 <command>
http://%HOSTIP:%HTTPPORT/bzz/60 -T - -H "Content-Length: 1"
</command>
<stdin>
more than one byte
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /bzz/60 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
%if !hyper
Content-Length: 1
%endif













|
















|









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
chunked Transfer-Encoding
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT from stdin with wrong content-length
</name>
 <command>
http://%HOSTIP:%HTTPPORT/bzz/%TESTNUMBER -T - -H "Content-Length: 1"
</command>
<stdin>
more than one byte
</stdin>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /bzz/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
%if !hyper
Content-Length: 1
%endif
Changes to jni/curl/tests/data/test600.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file600.txt --insecure
</command>
<file name="log/file600.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test601.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
scp
</server>
 <name>
SCP retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file601.txt --insecure
</command>
<file name="log/file601.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
scp
</server>
 <name>
SCP retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test602.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
sftp
</server>
 <name>
SFTP put
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file602.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload.602 --insecure
</command>
<file name="log/file602.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
sftp
</server>
 <name>
SFTP put
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload.%TESTNUMBER --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test603.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
scp
</server>
 <name>
SCP upload
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file603.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload.603 --insecure
</command>
<file name="log/file603.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
scp
</server>
 <name>
SCP upload
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload.%TESTNUMBER --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test608.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
sftp
</server>
 <name>
SFTP post-quote rename
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-rename %PWD/log/file608.txt %PWD/log/file608-renamed.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file608.txt --insecure
</command>
# Verify that the file was renamed properly, then rename the file back to what
# it was so the verify section works and the file can be cleaned up.
<postcheck>
perl %SRCDIR/libtest/test610.pl gone %PWD/log/file608.txt move %PWD/log/file608-renamed.txt %PWD/log/file608.txt
</postcheck>
<file name="log/file608.txt">
Test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/file608.txt">
Test file for rename test
</file>
<valgrind>
disable
</valgrind>
</verify>
</testcase>







|




|

|







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
sftp
</server>
 <name>
SFTP post-quote rename
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-rename %PWD/log/file%TESTNUMBER.txt %PWD/log/file%TESTNUMBER-renamed.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
# Verify that the file was renamed properly, then rename the file back to what
# it was so the verify section works and the file can be cleaned up.
<postcheck>
perl %SRCDIR/libtest/test610.pl gone %PWD/log/file%TESTNUMBER.txt move %PWD/log/file%TESTNUMBER-renamed.txt %PWD/log/file%TESTNUMBER.txt
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<file name="log/file%TESTNUMBER.txt">
Test file for rename test
</file>
<valgrind>
disable
</valgrind>
</verify>
</testcase>
Changes to jni/curl/tests/data/test609.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP post-quote mkdir failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-mkdir %PWD/log/file609.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file609.txt --insecure
</command>
<file name="log/file609.txt">
Test file for mkdir test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|

|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP post-quote mkdir failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-mkdir %PWD/log/file%TESTNUMBER.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test file for mkdir test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test61.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
httponly
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test=yes; httponly; domain=foo.com; expires=Fri Feb 13 11:56:27 GMT 2037
SET-COOKIE: test2=yes; domain=host.foo.com; expires=Fri Feb 13 11:56:27 GMT 2037
Set-Cookie: test3=maybe; domain=foo.com; path=/moo; secure
Set-Cookie: test4=no; domain=nope.foo.com; path=/moo; secure
Set-Cookie: test5=name; domain=anything.com; path=/ ; secure
Set-Cookie: fake=fooledyou; domain=..com; path=/;
Set-Cookie: supercookie=fooledyou; domain=.com; path=/;^M
Content-Length: 4

boo
</data>
</reply>

# Client-side







|









|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
httponly
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: test=yes; httponly; domain=foo.com; expires=Fri Feb 13 11:56:27 GMT 2037
SET-COOKIE: test2=yes; domain=host.foo.com; expires=Fri Feb 13 11:56:27 GMT 2037
Set-Cookie: test3=maybe; domain=foo.com; path=/moo; secure
Set-Cookie: test4=no; domain=nope.foo.com; path=/moo; secure
Set-Cookie: test5=name; domain=anything.com; path=/ ; secure
Set-Cookie: fake=fooledyou; domain=..com; path=/;
Set-Cookie: supercookie=fooledyou; domain=.com; path=/;
Content-Length: 4

boo
</data>
</reply>

# Client-side
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/61 -c log/jar61.txt -H "Host: www.host.foo.com"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/61 HTTP/1.1
Host: www.host.foo.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar61.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.host.foo.com	TRUE	/we/want/	FALSE	2118138987	test2	yes
#HttpOnly_.foo.com	TRUE	/we/want/	FALSE	2118138987	test	yes
</file>
</verify>
</testcase>







|






|





|









41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Explicitly set the time zone to a known good one, in case the user is
# using one of the 'right' zones that take into account leap seconds
# which causes the cookie expiry times to be different.
<setenv>
TZ=GMT
</setenv>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -c log/jar%TESTNUMBER.txt -H "Host: www.host.foo.com"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: www.host.foo.com
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.host.foo.com	TRUE	/we/want/	FALSE	2118138987	test2	yes
#HttpOnly_.foo.com	TRUE	/we/want/	FALSE	2118138987	test	yes
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test610.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test610.pl mkdir %PWD/log/test610.dir
</precheck>
 <name>
SFTP post-quote rmdir
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-rmdir %PWD/log/test610.dir" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file610.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl gone %PWD/log/test610.dir
</postcheck>
<file name="log/file610.txt">
Dummy test file for rmdir test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|





|


|

|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test%TESTNUMBER.pl mkdir %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP post-quote rmdir
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-rmdir %PWD/log/test%TESTNUMBER.dir" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test%TESTNUMBER.pl gone %PWD/log/test%TESTNUMBER.dir
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Dummy test file for rmdir test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test611.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test610.pl mkdir %PWD/log/test611.dir
</precheck>
 <name>
SFTP post-quote rename
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-rename %PWD/log/test611.dir %PWD/log/test611.new" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file611.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl rmdir %PWD/log/test611.new
</postcheck>
<file name="log/file611.txt">
Dummy test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|





|


|

|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test610.pl mkdir %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP post-quote rename
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-rename %PWD/log/test%TESTNUMBER.dir %PWD/log/test%TESTNUMBER.new" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl rmdir %PWD/log/test%TESTNUMBER.new
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Dummy test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test612.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
sftp
</server>
 <name>
SFTP post-quote remove file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file612.txt -Q "-rm %PWD/log/file612.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload.612  --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl gone %PWD/log/test612.txt
</postcheck>
<file name="log/file612.txt">
Dummy test file for remove test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|


|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
sftp
</server>
 <name>
SFTP post-quote remove file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt -Q "-rm %PWD/log/file%TESTNUMBER.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/upload.%TESTNUMBER  --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl gone %PWD/log/test%TESTNUMBER.txt
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Dummy test file for remove test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test613.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test613.dir
</precheck>
 <name>
SFTP directory retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test613.dir/ --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test613.dir %PWD/log/curl613.out
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>







|





|


|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test%TESTNUMBER.pl prepare %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP directory retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.dir/ --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test%TESTNUMBER.pl postprocess %PWD/log/test%TESTNUMBER.dir %PWD/log/curl%TESTNUMBER.out
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>
Changes to jni/curl/tests/data/test614.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test614.dir
</precheck>
 <name>
SFTP pre-quote chmod
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "chmod 444 %PWD/log/test614.dir/plainfile.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test614.dir/ --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test614.dir %PWD/log/curl614.out
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>







|





|


|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP pre-quote chmod
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "chmod 444 %PWD/log/test%TESTNUMBER.dir/plainfile.txt" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.dir/ --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test%TESTNUMBER.dir %PWD/log/curl%TESTNUMBER.out
</postcheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>
Changes to jni/curl/tests/data/test615.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test615.dir
</precheck>
 <name>
SFTP put remote failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file615.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test615.dir/rofile.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test615.dir
</postcheck>
<file name="log/file615.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"







|





|


|

|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP put remote failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.dir/rofile.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test%TESTNUMBER.dir
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test616.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
sftp
</server>
 <name>
SFTP retrieval of empty file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file616.txt --insecure
</command>
<file name="log/file616.txt">
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
sftp
</server>
 <name>
SFTP retrieval of empty file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>
Changes to jni/curl/tests/data/test617.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
scp
</server>
 <name>
SCP retrieval of empty file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file617.txt --insecure
</command>
<file name="log/file617.txt">
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
scp
</server>
 <name>
SCP retrieval of empty file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<valgrind>
Changes to jni/curl/tests/data/test618.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
sftp
</server>
 <name>
SFTP retrieval of two files
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file618.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file618.txt --insecure
</command>
<file name="log/file618.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
sftp
</server>
 <name>
SFTP retrieval of two files
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test619.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
scp
</server>
 <name>
SCP retrieval of two files
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file619.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file619.txt --insecure
</command>
<file name="log/file619.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<server>
scp
</server>
 <name>
SCP retrieval of two files
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test62.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, send cookies when using custom Host:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/62 http://%HOSTIP:%HTTPPORT/we/want/62?hoge=fuga -b log/jar62.txt -H "Host: www.host.foo.com"
</command>
<file name="log/jar62.txt">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_.foo.com	TRUE	/we/want/	FALSE	2147483647	test	yes
.host.foo.com	TRUE	/we/want/	FALSE	2147483647	test2	yes
.fake.host.foo.com	TRUE	/we/want/	FALSE	2147483647	test4	yes

.foo.com	TRUE	/moo	TRUE	0	test3	maybe
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/62 HTTP/1.1
Host: www.host.foo.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: test2=yes; test=yes

GET /we/want/62?hoge=fuga HTTP/1.1
Host: www.host.foo.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: test2=yes; test=yes

</protocol>
</verify>
</testcase>







|















|

|















|





|








9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, send cookies when using custom Host:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER?hoge=fuga -b log/jar%TESTNUMBER.txt -H "Host: www.host.foo.com"
</command>
<file name="log/jar%TESTNUMBER.txt">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_.foo.com	TRUE	/we/want/	FALSE	2147483647	test	yes
.host.foo.com	TRUE	/we/want/	FALSE	2147483647	test2	yes
.fake.host.foo.com	TRUE	/we/want/	FALSE	2147483647	test4	yes

.foo.com	TRUE	/moo	TRUE	0	test3	maybe
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: www.host.foo.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: test2=yes; test=yes

GET /we/want/%TESTNUMBER?hoge=fuga HTTP/1.1
Host: www.host.foo.com
User-Agent: curl/%VERSION
Accept: */*
Cookie: test2=yes; test=yes

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test620.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
sftp
</server>
 <name>
SFTP retrieval of missing file followed by good file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/not-a-valid-file-moooo sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file620.txt --insecure
</command>
<file name="log/file620.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
sftp
</server>
 <name>
SFTP retrieval of missing file followed by good file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/not-a-valid-file-moooo sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test621.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
scp
</server>
 <name>
SCP retrieval of missing file followed by good file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/not-a-valid-file-moooo scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file621.txt --insecure
</command>
<file name="log/file621.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<server>
scp
</server>
 <name>
SCP retrieval of missing file followed by good file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/not-a-valid-file-moooo scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test622.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
sftp
</server>
 <name>
SFTP put failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file622.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/nonexistent-directory/nonexistent-file --insecure
</command>
<file name="log/file622.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
sftp
</server>
 <name>
SFTP put failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/nonexistent-directory/nonexistent-file --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test623.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
scp
</server>
 <name>
SCP upload failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file623.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/nonexistent-directory/nonexistent-file --insecure
</command>
<file name="log/file623.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
scp
</server>
 <name>
SCP upload failure
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt scp://%HOSTIP:%SSHPORT%SSH_PWD/log/nonexistent-directory/nonexistent-file --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test624.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP put with --ftp-create-dirs
 </name>
 <command>
--ftp-create-dirs --key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file624.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test624.dir/upload.624 --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl move %PWD/log/test624.dir/upload.624 %PWD/log/upload.624 rmdir %PWD/log/test624.dir
</postcheck>
<file name="log/file624.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"







|


|

|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP put with --ftp-create-dirs
 </name>
 <command>
--ftp-create-dirs --key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.dir/upload.%TESTNUMBER --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl move %PWD/log/test%TESTNUMBER.dir/upload.%TESTNUMBER %PWD/log/upload.%TESTNUMBER rmdir %PWD/log/test%TESTNUMBER.dir
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test625.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP put with --ftp-create-dirs twice
 </name>
 <command>
--ftp-create-dirs --key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file625.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test625.a/upload.625 -T log/file625.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test625.b/upload.625 --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl move %PWD/log/test625.a/upload.625 %PWD/log/upload.625 rmdir %PWD/log/test625.a rm %PWD/log/test625.b/upload.625 rmdir %PWD/log/test625.b
</postcheck>
<file name="log/file625.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"







|


|

|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP put with --ftp-create-dirs twice
 </name>
 <command>
--ftp-create-dirs --key curl_client_key --pubkey curl_client_key.pub -u %USER: -T log/file%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.a/upload.%TESTNUMBER -T log/file%TESTNUMBER.txt sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/test%TESTNUMBER.b/upload.%TESTNUMBER --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl move %PWD/log/test%TESTNUMBER.a/upload.%TESTNUMBER %PWD/log/upload.%TESTNUMBER rmdir %PWD/log/test%TESTNUMBER.a rm %PWD/log/test%TESTNUMBER.b/upload.%TESTNUMBER rmdir %PWD/log/test%TESTNUMBER.b
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh upload test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test626.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
sftp
</server>
 <name>
SFTP invalid quote command
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "invalid-command foo bar" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file626.txt --insecure
</command>
<file name="log/file626.txt">
Test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|

|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
sftp
</server>
 <name>
SFTP invalid quote command
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "invalid-command foo bar" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test627.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
sftp
</server>
 <name>
SFTP quote remove file with NOBODY
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -I -Q "rm %PWD/log/file627.txt" sftp://%HOSTIP:%SSHPORT --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl gone %PWD/log/test627.txt
</postcheck>
<file name="log/file627.txt">
Dummy test file for remove test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|


|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
sftp
</server>
 <name>
SFTP quote remove file with NOBODY
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -I -Q "rm %PWD/log/file%TESTNUMBER.txt" sftp://%HOSTIP:%SSHPORT --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl gone %PWD/log/test%TESTNUMBER.txt
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Dummy test file for remove test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test63.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
HTTP proxy Basic auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 26

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy authorization set in environment
 </name>
<setenv>
http_proxy=http://fake:user@%HOSTIP:%HTTPPORT/
</setenv>
 <command>
http://we.want.that.site.com/63
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/63 HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>













|



















|









|









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
HTTP proxy Basic auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 26

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with proxy authorization set in environment
 </name>
<setenv>
http_proxy=http://fake:user@%HOSTIP:%HTTPPORT/
</setenv>
 <command>
http://we.want.that.site.com/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://we.want.that.site.com/%TESTNUMBER HTTP/1.1
Host: we.want.that.site.com
Proxy-Authorization: Basic ZmFrZTp1c2Vy
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test633.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval with byte range
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file633.txt -r 5-9 --insecure
</command>
<file name="log/file633.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval with byte range
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt -r 5-9 --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test634.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP retrieval with byte range past end of file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file634.txt -r 5-99 --insecure
</command>
<file name="log/file634.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP retrieval with byte range past end of file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt -r 5-99 --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test635.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval with byte range relative to end of file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file635.txt -r -9 --insecure
</command>
<file name="log/file635.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval with byte range relative to end of file
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt -r -9 --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test636.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP retrieval with X- byte range
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file636.txt -r 5- --insecure
</command>
<file name="log/file636.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
sftp
</server>
 <name>
SFTP retrieval with X- byte range
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt -r 5- --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test637.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
sftp
</server>
 <name>
SFTP retrieval with invalid X- range
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file637.txt -r 99- --insecure
</command>
<file name="log/file637.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
sftp
</server>
 <name>
SFTP retrieval with invalid X- range
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt -r 99- --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test638.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test610.pl mkdir %PWD/log/test638.dir
</precheck>
 <name>
SFTP post-quote rename * asterisk accept-fail
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-*rename %PWD/log/test638.dir %PWD/log/test638.new" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file638.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl rmdir %PWD/log/test638.new
</postcheck>
<file name="log/file638.txt">
Dummy test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|





|


|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test610.pl mkdir %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP post-quote rename * asterisk accept-fail
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-*rename %PWD/log/test%TESTNUMBER.dir %PWD/log/test%TESTNUMBER.new" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl rmdir %PWD/log/test%TESTNUMBER.new
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Dummy test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test639.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test610.pl mkdir %PWD/log/test639.dir
</precheck>
 <name>
SFTP post-quote rename * asterisk accept-fail
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-*rename %PWD/log/test639-not-exists-dir %PWD/log/test639.new" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file639.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl rmdir %PWD/log/test639.dir
</postcheck>
<file name="log/file639.txt">
Dummy test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|





|


|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test610.pl mkdir %PWD/log/test%TESTNUMBER.dir
</precheck>
 <name>
SFTP post-quote rename * asterisk accept-fail
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: -Q "-*rename %PWD/log/test%TESTNUMBER-not-exists-dir %PWD/log/test%TESTNUMBER.new" sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<postcheck>
perl %SRCDIR/libtest/test610.pl rmdir %PWD/log/test%TESTNUMBER.dir
</postcheck>
<file name="log/file%TESTNUMBER.txt">
Dummy test file for rename test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test64.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/64 -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /64 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /64 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf725abaca"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="c55f7f30d83d774a3d2dcacf725abaca"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test640.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
sftp
</server>
 <name>
SFTP --head retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file640.txt --insecure --head
</command>
<file name="log/file640.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
sftp
</server>
 <name>
SFTP --head retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure --head
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test641.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
scp
</server>
 <name>
SCP --head retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file641.txt --insecure --head
</command>
<file name="log/file641.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
scp
</server>
 <name>
SCP --head retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure --head
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test642.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: --compressed-ssh sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file642.txt --insecure
</command>
<file name="log/file642.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP retrieval
 </name>
 <command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: --compressed-ssh sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt --insecure
</command>
<file name="log/file%TESTNUMBER.txt">
Test data
for ssh test
</file>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test643.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib643
</tool>

 <name>
HTTP multi-part mimepost using read callback for the file part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/643
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /643 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 640
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"







|








|






|















|






|














|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP multi-part mimepost using read callback for the file part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 640
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
send
------------------------------
Content-Disposition: form-data; name="somename"; filename="somefile.txt"
Content-Type: text/plain

blah blah
--------------------------------
POST /643 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 654
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2"







|







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
send
------------------------------
Content-Disposition: form-data; name="somename"; filename="somefile.txt"
Content-Type: text/plain

blah blah
--------------------------------
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 654
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2"
Changes to jni/curl/tests/data/test644.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib644
</tool>

 <name>
HTTP multi-part formpost with aborted read callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/644
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /644 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 640
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"







|






|











|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP multi-part formpost with aborted read callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 640
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"
Changes to jni/curl/tests/data/test645.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib645
</tool>

 <name>
HTTP multi-part chunked mimepost using read callback for the file part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/645
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /645 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

76







|








|






|















|






|














|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP multi-part chunked mimepost using read callback for the file part
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

76
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Content-Type: text/plain

blah blah
--------------------------------

0

POST /645 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

84







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Content-Type: text/plain

blah blah
--------------------------------

0

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

84
Changes to jni/curl/tests/data/test646.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/headers646" -F "=)" -F "=@log/test646.txt;headers=<log/headers646" -H "From: different" -H "To: another" -H "Reply-To: <followup@example.com>"
</command>
<file1 name="log/test646.txt">
This is an attached file.

It may contain any type of data.
</file1>
<file2 name="log/headers646">
# This line is a comment
X-fileheader1: This is a header from a file 

# This line is another comment. It precedes a folded header.
X-fileheader2: This is  #a
 folded header
</file2>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO 646
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------







|

|




|

















|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/headers%TESTNUMBER" -F "=)" -F "=@log/test%TESTNUMBER.txt;headers=<log/headers%TESTNUMBER" -H "From: different" -H "To: another" -H "Reply-To: <followup@example.com>"
</command>
<file1 name="log/test%TESTNUMBER.txt">
This is an attached file.

It may contain any type of data.
</file1>
<file2 name="log/headers%TESTNUMBER">
# This line is a comment
X-fileheader1: This is a header from a file 

# This line is another comment. It precedes a folded header.
X-fileheader2: This is  #a
 folded header
</file2>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
X-fileheader1: This is a header from a file
X-fileheader2: This is #a folded header

This is the plain text version
--------------------------------

------------------------------
Content-Disposition: attachment; filename="test646.txt"
X-fileheader1: This is a header from a file
X-fileheader2: This is #a folded header

This is an attached file.

It may contain any type of data.

--------------------------------
.
</upload>
</verify>
</testcase>







|












79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
X-fileheader1: This is a header from a file
X-fileheader2: This is #a folded header

This is the plain text version
--------------------------------

------------------------------
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
X-fileheader1: This is a header from a file
X-fileheader2: This is #a folded header

This is an attached file.

It may contain any type of data.

--------------------------------
.
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test647.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
imap
</server>
 <name>
IMAP APPEND multipart using mime API
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/647 -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar <foobar@example.com>" -H "To: joe@example.com" -H "Message-Id: <B27397-0100000@example.com>" -H "Subject: afternoon meeting" -u user:secret
</command>
<file name="log/test647.txt">
This is an attached file.

It may contain any type of data.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 APPEND 647 (\Seen) {892}
A004 LOGOUT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------
Mime-Version: 1.0
Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
From: Fred Foobar <foobar@example.com>







|

|
















|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
imap
</server>
 <name>
IMAP APPEND multipart using mime API
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/test%TESTNUMBER.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar <foobar@example.com>" -H "To: joe@example.com" -H "Message-Id: <B27397-0100000@example.com>" -H "Subject: afternoon meeting" -u user:secret
</command>
<file name="log/test%TESTNUMBER.txt">
This is an attached file.

It may contain any type of data.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 APPEND %TESTNUMBER (\Seen) {892}
A004 LOGOUT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------
Mime-Version: 1.0
Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
From: Fred Foobar <foobar@example.com>
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<body>This is the html version</body>
------------------------------

This is the plain text version
--------------------------------

------------------------------
Content-Disposition: attachment; filename="test647.txt"

This is an attached file.

It may contain any type of data.

--------------------------------
</upload>
</verify>
</testcase>







|









63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<body>This is the html version</body>
------------------------------

This is the plain text version
--------------------------------

------------------------------
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"

This is an attached file.

It may contain any type of data.

--------------------------------
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test648.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the e-mail inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/test648.txt;encoder=base64" -H "From: different" -H "To: another"
</command>
<file name="log/test648.txt">
This is an attached file.

It may contain any type of data and will be encoded in base64 for transfer.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO 648
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------
Mime-Version: 1.0
From: different
To: another

------------------------------
Content-Transfer-Encoding: quoted-printable
Content-disposition: "inline"

This is the e-mail inline text with a very long line containing the special=
 character =3D and that should be split by encoder.
------------------------------
Content-Disposition: attachment; filename="test648.txt"
Content-Transfer-Encoding: base64

VGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQgbWF5IGNvbnRhaW4gYW55IHR5cGUgb2YgZGF0
YSBhbmQgd2lsbCBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg==
--------------------------------
.
</upload>
</verify>
</testcase>







|

|














|


















|









23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the e-mail inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/test%TESTNUMBER.txt;encoder=base64" -H "From: different" -H "To: another"
</command>
<file name="log/test%TESTNUMBER.txt">
This is an attached file.

It may contain any type of data and will be encoded in base64 for transfer.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------
Mime-Version: 1.0
From: different
To: another

------------------------------
Content-Transfer-Encoding: quoted-printable
Content-disposition: "inline"

This is the e-mail inline text with a very long line containing the special=
 character =3D and that should be split by encoder.
------------------------------
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Transfer-Encoding: base64

VGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQgbWF5IGNvbnRhaW4gYW55IHR5cGUgb2YgZGF0
YSBhbmQgd2lsbCBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg==
--------------------------------
.
</upload>
</verify>
</testcase>
Changes to jni/curl/tests/data/test649.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/test649.txt;encoder=7bit" -H "From: different" -H "To: another"
</command>
<file name="log/test649.txt">
This is an attached file (in french: pièce jointe).

It contains at least an 8-bit byte value.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO 649
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
</protocol>
<upload nonewline="yes">
Content-Type: multipart/mixed; boundary=----------------------------
Mime-Version: 1.0
From: different
To: another

------------------------------
Content-Transfer-Encoding: 7bit

This is valid
------------------------------
Content-Disposition: attachment; filename="test649.txt"
Content-Transfer-Encoding: 7bit

This is an attached file (in french: pi
</upload>
<errorcode>
26
</errorcode>
</verify>
</testcase>







|

|














|















|









23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/test%TESTNUMBER.txt;encoder=7bit" -H "From: different" -H "To: another"
</command>
<file name="log/test%TESTNUMBER.txt">
This is an attached file (in french: pièce jointe).

It contains at least an 8-bit byte value.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
</protocol>
<upload nonewline="yes">
Content-Type: multipart/mixed; boundary=----------------------------
Mime-Version: 1.0
From: different
To: another

------------------------------
Content-Transfer-Encoding: 7bit

This is valid
------------------------------
Content-Disposition: attachment; filename="test%TESTNUMBER.txt"
Content-Transfer-Encoding: 7bit

This is an attached file (in french: pi
</upload>
<errorcode>
26
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test65.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization with bad password
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/65 -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /65 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /65 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/65", response="66d68d3251f1839576ba7c766cf9205b"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
!SSPI
crypto
</features>
 <name>
HTTP with Digest authorization with bad password
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:test2pass --digest
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/%TESTNUMBER", response="66d68d3251f1839576ba7c766cf9205b"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test650.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib650
</tool>

 <name>
HTTP formpost using form API
 </name>
<stdin>
 Some data from stdin
</stdin>
 <command>
http://%HOSTIP:%HTTPPORT/650 log/test650.filedata
</command>
<file name="log/test650.filedata">
This is data from a file.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /650 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

361







|















|









|

|















|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP formpost using form API
 </name>
<stdin>
 Some data from stdin
</stdin>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER log/test%TESTNUMBER.filedata
</command>
<file name="log/test%TESTNUMBER.filedata">
This is data from a file.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

361
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

uhis is what we post to the silly web serve
------------------------------
Content-Disposition: form-data; name="multifile"
Content-Type: multipart/mixed; boundary=----------------------------

------------------------------
Content-Disposition: attachment; filename="test650.filedata"
Content-Type: application/octet-stream

This is data from a file.

------------------------------
Content-Disposition: attachment; filename="test650.filedata"
Content-Type: text/whatever


a5
This is data from a file.

------------------------------
Content-Disposition: attachment; filename="test650.filedata"
Content-Type: text/whatever


af
This is data from a file.

--------------------------------







|





|







|







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

uhis is what we post to the silly web serve
------------------------------
Content-Disposition: form-data; name="multifile"
Content-Type: multipart/mixed; boundary=----------------------------

------------------------------
Content-Disposition: attachment; filename="test%TESTNUMBER.filedata"
Content-Type: application/octet-stream

This is data from a file.

------------------------------
Content-Disposition: attachment; filename="test%TESTNUMBER.filedata"
Content-Type: text/whatever


a5
This is data from a file.

------------------------------
Content-Disposition: attachment; filename="test%TESTNUMBER.filedata"
Content-Type: text/whatever


af
This is data from a file.

--------------------------------
Changes to jni/curl/tests/data/test651.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib651
</tool>

 <name>
curl_formadd with huge COPYCONTENTS
 </name>
<stdin>
 Some data from stdin
</stdin>
 <command>
http://%HOSTIP:%HTTPPORT/651 log/test651.filedata
</command>
<file name="log/test651.filedata">
This is data from a file.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /651 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 17139
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="hello"

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
--------------------------------
</protocol>
</verify>
</testcase>







|















|









|

|















|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
curl_formadd with huge COPYCONTENTS
 </name>
<stdin>
 Some data from stdin
</stdin>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER log/test%TESTNUMBER.filedata
</command>
<file name="log/test%TESTNUMBER.filedata">
This is data from a file.
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 17139
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="hello"

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
--------------------------------
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test652.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#
# Client-side
<client>
<server>
smtp
</server>
<tool>
lib652
</tool>

 <name>
SMTP with encoded huge mime data contents
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/652
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO 652
MAIL FROM:<somebody@example.com>
RCPT TO:<someone@example.com>
DATA
QUIT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------







|






|











|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#
# Client-side
<client>
<server>
smtp
</server>
<tool>
lib%TESTNUMBER
</tool>

 <name>
SMTP with encoded huge mime data contents
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<somebody@example.com>
RCPT TO:<someone@example.com>
DATA
QUIT
</protocol>
<upload>
Content-Type: multipart/mixed; boundary=----------------------------
Changes to jni/curl/tests/data/test653.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib653
</tool>

 <name>
Reuse of handle after altering mime data
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/653
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /653 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 150
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="name"

short value
--------------------------------
POST /653 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 167
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="name"

long value for length change
--------------------------------
</protocol>
</verify>
</testcase>







|








|






|















|






|














|










|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Reuse of handle after altering mime data
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 150
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="name"

short value
--------------------------------
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 167
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="name"

long value for length change
--------------------------------
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test654.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib654
</tool>

 <name>
HTTP duplicate easy handle with mime data
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/654
</command>
<file name="log/file654.txt">
This is data from a file
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /654 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

POST /654 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

1af
------------------------------
Content-Disposition: form-data; name="greeting"
Content-Type: application/X-Greeting
Content-Transfer-Encoding: base64
X-Test-Number: 654

aGVsbG8=
------------------------------
Content-Disposition: form-data; filename="file654.txt"
Content-Type: text/plain

This is data from a file

------------------------------
Content-Disposition: form-data








|








|






|















|






|

|















|




|











|



|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP duplicate easy handle with mime data
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<file name="log/file%TESTNUMBER.txt">
This is data from a file
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

1af
------------------------------
Content-Disposition: form-data; name="greeting"
Content-Type: application/X-Greeting
Content-Transfer-Encoding: base64
X-Test-Number: %TESTNUMBER

aGVsbG8=
------------------------------
Content-Disposition: form-data; filename="file%TESTNUMBER.txt"
Content-Type: text/plain

This is data from a file

------------------------------
Content-Disposition: form-data

Changes to jni/curl/tests/data/test655.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib655
</tool>

 <name>
resolver start callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/655
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>












|


















|






|











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<testcase>
<info>
<keywords>
HTTP
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
resolver start callback
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test658.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CURLU
</keywords>
</info>
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
<client>
<server>
http
</server>
<tool>
lib658
</tool>
<name>
Pass URL to libcurl with CURLOPT_CURLU
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/658
</command>
</client>

<verify>
<protocol>
GET /658 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>

</testcase>











|

















|





|





|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CURLU
</keywords>
</info>
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
Pass URL to libcurl with CURLOPT_CURLU
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>

</testcase>
Changes to jni/curl/tests/data/test659.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CURLU
proxy
</keywords>
</info>
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
<client>
<server>
http
</server>
<tool>
lib659
</tool>
<name>
CURLOPT_CURLU without the path set - over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

<verify>
<protocol>
GET http://www.example.com:80/ HTTP/1.1
Host: www.example.com
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>

</testcase>












|

















|














|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CURLU
proxy
</keywords>
</info>
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
CURLOPT_CURLU without the path set - over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

<verify>
<protocol>
GET http://www.example.com/ HTTP/1.1
Host: www.example.com
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>

</testcase>
Changes to jni/curl/tests/data/test66.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
HTTP GET without headers in the response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/66 --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /66 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
http
</server>
 <name>
HTTP GET without headers in the response
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --http0.9
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test660.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
lib597
</tool>
 <name>
IMAP CONNECT_ONLY option
 </name>

<command>
imap://%HOSTIP:%IMAPPORT/660
</command>

</client>

#
# Verify data after the test has been "shot"
<verify>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
lib597
</tool>
 <name>
IMAP CONNECT_ONLY option
 </name>

<command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER
</command>

</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test661.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib661
</tool>

 <name>
Avoid redundant CWDs
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /folderA
EPSV
TYPE I
RETR 661
CWD /folderB
EPSV
RETR 661
QUIT
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
RETR /folderA/661
CWD /folderB
EPSV
RETR 661
EPSV
RETR /folderA/661
QUIT
USER anonymous
PASS ftp@example.com
PWD
SYST
QUIT
USER anonymous







|




















|


|






|


|

|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Avoid redundant CWDs
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /folderA
EPSV
TYPE I
RETR %TESTNUMBER
CWD /folderB
EPSV
RETR %TESTNUMBER
QUIT
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
RETR /folderA/%TESTNUMBER
CWD /folderB
EPSV
RETR %TESTNUMBER
EPSV
RETR /folderA/%TESTNUMBER
QUIT
USER anonymous
PASS ftp@example.com
PWD
SYST
QUIT
USER anonymous
Changes to jni/curl/tests/data/test662.
1
2
3
4
5

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<testcase>
<info>
<keywords>
HTTP
HTTP GET

followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Location: http://example.net/tes t case=/6620002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</data2>
<datacheck>
HTTP/1.1 302 OK
Location: http://example.net/tes t case=/6620002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with whitespace in absolute Location: URL
 </name>
 <command>
http://example.com/please/gimme/662 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.com/please/gimme/662 HTTP/1.1
Host: example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.net/tes%20t%20case=/6620002 HTTP/1.1
Host: example.net
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>





>








|
|






|






|
|




|
















|










|





|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Location: http://example.net/tes t case=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</data2>
<datacheck>
HTTP/1.1 302 OK
Location: http://example.net/tes t case=/%TESTNUMBER0002
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with whitespace in absolute Location: URL
 </name>
 <command>
http://example.com/please/gimme/%TESTNUMBER -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.com/please/gimme/%TESTNUMBER HTTP/1.1
Host: example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.net/tes%20t%20case=/%TESTNUMBER0002 HTTP/1.1
Host: example.net
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test663.
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<testcase>
#
# This test is crafted to reproduce oss-fuzz bug
# https://crbug.com/oss-fuzz/17954
#
<info>
<keywords>
HTTP
HTTP GET

followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Location: http://example.net/there/it/is/../../tes t case=/6630002? yes no
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</data2>
<datacheck>
HTTP/1.1 302 OK
Location: http://example.net/there/it/is/../../tes t case=/6630002? yes no
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with dotdots and whitespaces in absolute Location: URL
 </name>
 <command>
http://example.com/please/../gimme/663?foobar#hello -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.com/gimme/663?foobar HTTP/1.1
Host: example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.net/there/tes%20t%20case=/6630002?+yes+no HTTP/1.1
Host: example.net
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>









>








|
|






|






|
|




|
















|










|





|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<testcase>
#
# This test is crafted to reproduce oss-fuzz bug
# https://crbug.com/oss-fuzz/17954
#
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Location: http://example.net/there/it/is/../../tes t case=/%TESTNUMBER0002? yes no
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</data2>
<datacheck>
HTTP/1.1 302 OK
Location: http://example.net/there/it/is/../../tes t case=/%TESTNUMBER0002? yes no
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK
Location: this should be ignored
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with dotdots and whitespaces in absolute Location: URL
 </name>
 <command>
http://example.com/please/../gimme/%TESTNUMBER?foobar#hello -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://example.com/gimme/%TESTNUMBER?foobar HTTP/1.1
Host: example.com
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.net/there/tes%20t%20case=/%TESTNUMBER0002?+yes+no HTTP/1.1
Host: example.net
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test664.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP correct host key
 </name>
 <command>
--hostpubmd5 %SSHSRVMD5 --key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file664.txt
</command>
<file name="log/file664.txt">
test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
sftp
</server>
 <name>
SFTP correct host key
 </name>
 <command>
--hostpubmd5 %SSHSRVMD5 --key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt
</command>
<file name="log/file%TESTNUMBER.txt">
test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test665.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
scp
</server>
 <name>
SCP correct host key
 </name>
 <command>
--hostpubmd5 %SSHSRVMD5 --key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file665.txt
</command>
<file name="log/file665.txt">
test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>







|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<server>
scp
</server>
 <name>
SCP correct host key
 </name>
 <command>
--hostpubmd5 %SSHSRVMD5 --key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/file%TESTNUMBER.txt
</command>
<file name="log/file%TESTNUMBER.txt">
test
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
Changes to jni/curl/tests/data/test666.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
<datacheck>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib666
</tool>

 <name>
HTTP mime post with binary-encoded huge data contents
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/666
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /666 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 17225
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="upfile"; filename="myfile.txt"







|







|














|






|











|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</data>
<datacheck>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 3

OK
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP mime post with binary-encoded huge data contents
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 17225
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="upfile"; filename="myfile.txt"
Changes to jni/curl/tests/data/test667.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib667
</tool>

 <name>
HTTP chunked mimepost using single-byte read callback with encoder
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/667
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /667 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

7f







|








|















|






|














|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP chunked mimepost using single-byte read callback with encoder
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

7f
Changes to jni/curl/tests/data/test668.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib668
</tool>

 <name>
HTTP mimepost early end of data detection
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/668
</command>
<file name="log/file668.txt">
This is data from a file
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /668 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

c1
------------------------------
Content-Disposition: form-data; name="field1"

dummy
------------------------------
Content-Disposition: form-data; name="field2"


5
dummy
91

------------------------------
Content-Disposition: form-data; name="field3"; filename="file668.txt"
Content-Type: text/plain


49
This is data from a file

--------------------------------

0

</protocol>
</verify>
</testcase>







|








|















|






|

|















|




















|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
HTTP mimepost early end of data detection
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<file name="log/file%TESTNUMBER.txt">
This is data from a file
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

c1
------------------------------
Content-Disposition: form-data; name="field1"

dummy
------------------------------
Content-Disposition: form-data; name="field2"


5
dummy
91

------------------------------
Content-Disposition: form-data; name="field3"; filename="file%TESTNUMBER.txt"
Content-Type: text/plain


49
This is data from a file

--------------------------------

0

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test669.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP POST
HTTP MIME POST
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP custom Content-Type with parameter
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /we/want/669 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 242
Content-Type: multipart/form-data; charset=utf-8; boundary=----------------------------

------------------------------













|
















|










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<testcase>
<info>
<keywords>
HTTP
HTTP POST
HTTP MIME POST
HTTP FORMPOST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP custom Content-Type with parameter
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 242
Content-Type: multipart/form-data; charset=utf-8; boundary=----------------------------

------------------------------
Changes to jni/curl/tests/data/test67.
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/67 -u testuser:testpass --ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /67 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /67 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|









|





|







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test670.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib670
</tool>

 <name>
Request pause from mime read callback: multi
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/670
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /670 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>







|








|















|






|











|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Request pause from mime read callback: multi
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test671.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib671
</tool>

 <name>
Request pause from mime read callback: easy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/671
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /671 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>







|








|















|






|











|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Request pause from mime read callback: easy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test672.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib672
</tool>

 <name>
Request pause from form read callback: multi
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/672
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /672 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>







|








|















|






|











|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Request pause from form read callback: multi
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test673.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib673
</tool>

 <name>
Request pause from form read callback: easy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/673
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /673 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>







|








|















|






|











|













8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

 <name>
Request pause from form read callback: easy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 142
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data; name="field"

AB
--------------------------------
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test674.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CURLU
curl_easy_duphandle
</keywords>
</info>
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
<client>
<server>
http
</server>
<tool>
lib674
</tool>
<name>
Set CURLOPT_CURLU and dupe the handle
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/674
</command>
</client>

<verify>
<protocol>
GET /674 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /674 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>

</testcase>












|

















|





|





|



|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<testcase>
<info>
<keywords>
HTTP
HTTP GET
CURLOPT_CURLU
curl_easy_duphandle
</keywords>
</info>
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>
<client>
<server>
http
</server>
<tool>
lib%TESTNUMBER
</tool>
<name>
Set CURLOPT_CURLU and dupe the handle
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>

</testcase>
Added jni/curl/tests/data/test675.














































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP Basic auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Content-Length: 26

the content would go here
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP connection re-use and different credentials
 </name>

<command>
http://user1:foo1@%HOSTIP:%HTTPPORT/user1/%TESTNUMBER http://user2:foo2@%HOSTIP:%HTTPPORT/user2/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /user1/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjE6Zm9vMQ==
User-Agent: curl/%VERSION
Accept: */*

GET /user2/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic dXNlcjI6Zm9vMg==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test68.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/68 -u testuser:testpass --ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /68 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /68 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|









|





|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test69.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/69 -u testuser:testpass --anyauth
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /69 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /69 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /69 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|









|




|





|







85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test7.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; domain=127.0.0.1; path=/;
Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/;

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie parser and header recording
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/7 -b none -D log/heads7.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/7 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads7.txt">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; domain=127.0.0.1; path=/;
Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/;

</file>
</verify>
</testcase>







|



















|






|





|

|










8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; domain=127.0.0.1; path=/;
Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/;

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie parser and header recording
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -b none -D log/heads%TESTNUMBER.txt
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/heads%TESTNUMBER.txt">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; domain=127.0.0.1; path=/;
Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/;

</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test70.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<server>
http
</server>
 <name>
HTTP with Digest *OR* NTLM authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/70 -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /70 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /70 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/70", response="2c9a6f00af0d86497b177b90e90c688a"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<server>
http
</server>
 <name>
HTTP with Digest *OR* NTLM authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/%TESTNUMBER", response="2c9a6f00af0d86497b177b90e90c688a"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test700.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
socks4
</server>
 <name>
HTTP GET via SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:%SOCKSPORT http://%HOSTIP:%HTTPPORT/700
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /700 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
socks4
</server>
 <name>
HTTP GET via SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:%SOCKSPORT http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test701.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
socks5
</server>
 <name>
HTTP GET via SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:%SOCKSPORT http://%HOSTIP:%HTTPPORT/701
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /701 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
socks5
</server>
 <name>
HTTP GET via SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:%SOCKSPORT http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test704.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:%NOLISTENPORT http://%HOSTIP:%HTTPPORT/704
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:%NOLISTENPORT http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test705.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:%NOLISTENPORT http://%HOSTIP:%HTTPPORT/705
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:%NOLISTENPORT http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test708.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<setenv>
all_proxy=socks4://%HOSTIP:%SOCKSPORT
</setenv>
 <name>
HTTP GET via SOCKS4 proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/708
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /708 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<setenv>
all_proxy=socks4://%HOSTIP:%SOCKSPORT
</setenv>
 <name>
HTTP GET via SOCKS4 proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test709.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<setenv>
http_proxy=socks5://%HOSTIP:%SOCKSPORT
</setenv>
 <name>
HTTP GET via SOCKS5 set in http_proxy environment variable
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/709
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /709 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<setenv>
http_proxy=socks5://%HOSTIP:%SOCKSPORT
</setenv>
 <name>
HTTP GET via SOCKS5 set in http_proxy environment variable
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test71.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
config file
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP and -F upload in config file
 </name>
<stdin>
-F name=daniel
-F tool=curl
-F file=@log/test71.txt
user-agent = ""
</stdin>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/71 -K -
</command>
# We create this file before the command is invoked!
<file name="log/test71.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/71 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 408
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"

curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test71.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------9ef8d6205763--
</protocol>
</verify>
</testcase>












|



















|



|


|












|














|










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
config file
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP and -F upload in config file
 </name>
<stdin>
-F name=daniel
-F tool=curl
-F file=@log/test%TESTNUMBER.txt
user-agent = ""
</stdin>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -K -
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 408
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"

daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"

curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test%TESTNUMBER.txt"
Content-Type: text/plain

foo-
This is a moo-
bar

------------------------------9ef8d6205763--
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test710.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
socks5
</server>
 <name>
HTTP GET via SOCKS5 set with --proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/710 --proxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /710 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
http
socks5
</server>
 <name>
HTTP GET via SOCKS5 set with --proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test711.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<setenv>
all_proxy=socks5://%HOSTIP:%SOCKSPORT
</setenv>
 <name>
FTP fetch with all_proxy set to socks5
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/711
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 711
RETR 711
QUIT
</protocol>
</verify>
</testcase>







|












|
|




29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<setenv>
all_proxy=socks5://%HOSTIP:%SOCKSPORT
</setenv>
 <name>
FTP fetch with all_proxy set to socks5
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test712.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
ftp
socks5
</server>
 <name>
FTP fetch with --proxy set to socks5://
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/712 --proxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 712
RETR 712
QUIT
</protocol>
</verify>
</testcase>







|












|
|




23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
ftp
socks5
</server>
 <name>
FTP fetch with --proxy set to socks5://
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test713.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
ftp
socks5
</server>
 <name>
FTP fetch with --proxy set to socks5:// and with --connect-to
 </name>
 <command>
ftp://ftp.example.com/713 --connect-to ::%HOSTIP:%FTPPORT --proxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 713
RETR 713
QUIT
</protocol>
</verify>
</testcase>







|












|
|




24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
ftp
socks5
</server>
 <name>
FTP fetch with --proxy set to socks5:// and with --connect-to
 </name>
 <command>
ftp://ftp.example.com/%TESTNUMBER --connect-to ::%HOSTIP:%FTPPORT --proxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test714.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
http
proxy
</features>
 <name>
FTP fetch with --proxy set to http:// and with --connect-to
 </name>
 <command>
ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:%FTPPORT --proxytunnel --proxy http://%HOSTIP:%PROXYPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 714
RETR 714
QUIT
</protocol>
</verify>
</testcase>







|












|
|




43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
http
proxy
</features>
 <name>
FTP fetch with --proxy set to http:// and with --connect-to
 </name>
 <command>
ftp://ftp.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%FTPPORT --proxytunnel --proxy http://%HOSTIP:%PROXYPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test715.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
http
proxy
</features>
 <name>
FTP fetch with --preproxy, --proxy and --connect-to
 </name>
 <command>
ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:%FTPPORT --proxytunnel --proxy %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE 715
RETR 715
QUIT
</protocol>
</verify>
</testcase>







|












|
|




45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
http
proxy
</features>
 <name>
FTP fetch with --preproxy, --proxy and --connect-to
 </name>
 <command>
ftp://ftp.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%FTPPORT --proxytunnel --proxy %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT 
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
SIZE %TESTNUMBER
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test716.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</features>
<name>
SOCKS5 proxy with too long user name
</name>

# it should never connect to the target server
 <command>
http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@%HOSTIP:%SOCKSPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</features>
<name>
SOCKS5 proxy with too long user name
</name>

# it should never connect to the target server
 <command>
http://hohoho.example.com:99/%TESTNUMBER -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@%HOSTIP:%SOCKSPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test717.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
SOCKS5
all_proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
SOCKS5
all_proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</server>
<name>
SOCKS5 proxy auth
</name>

# target a port that won't work without the SOCKS magic
 <command>
http://%HOSTIP:1/717 -x socks5://uz3r:p4ssworm@%HOSTIP:%SOCKSPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /717 HTTP/1.1
Host: %HOSTIP:1
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|










|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</server>
<name>
SOCKS5 proxy auth
</name>

# target a port that won't work without the SOCKS magic
 <command>
http://%HOSTIP:1/%TESTNUMBER -x socks5://uz3r:p4ssworm@%HOSTIP:%SOCKSPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:1
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test72.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
!SSPI
crypto
</features>
 <name>
HTTP with Digest *OR* Basic authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/72 -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /72 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /72 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/72", response="9fcd1330377365a09bbcb33b2cbb25bd"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|






|




|

|






57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
!SSPI
crypto
</features>
 <name>
HTTP with Digest *OR* Basic authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/%TESTNUMBER", response="9fcd1330377365a09bbcb33b2cbb25bd"
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test73.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
cookiejar
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Set-Cookie: IPCZQX01af0fca5c=000010008168c200d25dfc4b; path=/; domain=.NOT_DISCLOSED.se
Content-Length: 4

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, receive cookies when using custom Host:, domain using only two dots
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/73 -c log/jar73.txt -H "Host: host.NOT_DISCLOSED.se"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/73 HTTP/1.1
Host: host.NOT_DISCLOSED.se
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar73.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.NOT_DISCLOSED.se	TRUE	/	FALSE	0	IPCZQX01af0fca5c	000010008168c200d25dfc4b
</file>
</verify>
</testcase>













|

















|






|





|








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
cookiejar
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
Set-Cookie: IPCZQX01af0fca5c=000010008168c200d25dfc4b; path=/; domain=.NOT_DISCLOSED.se
Content-Length: 4

boo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP, receive cookies when using custom Host:, domain using only two dots
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -c log/jar%TESTNUMBER.txt -H "Host: host.NOT_DISCLOSED.se"
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: host.NOT_DISCLOSED.se
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/jar%TESTNUMBER.txt" mode="text">
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.NOT_DISCLOSED.se	TRUE	/	FALSE	0	IPCZQX01af0fca5c	000010008168c200d25dfc4b
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test74.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<server>
http
</server>
 <name>
HTTP, urlglob {}-retrieval and -o #[num] usage
 </name>
 <command option="no-output">
"http://%HOSTIP:%HTTPPORT/{74,740001}" -o "log/dumpit#1.dump"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /74 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /740001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/dumpit740001.dump">
HTTP/1.0 200 OK
Content-Type: text/html
Funny-head: swsclose
Connection: close

crap data
</file>
</verify>
</testcase>







|







|




|





|









39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<server>
http
</server>
 <name>
HTTP, urlglob {}-retrieval and -o #[num] usage
 </name>
 <command option="no-output">
"http://%HOSTIP:%HTTPPORT/{%TESTNUMBER,%TESTNUMBER0001}" -o "log/dumpit#1.dump"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/dumpit%TESTNUMBER0001.dump">
HTTP/1.0 200 OK
Content-Type: text/html
Funny-head: swsclose
Connection: close

crap data
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test76.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<features>
http
</features>
 <name>
HTTP, -O with no file name part in the URL
 </name>
 <command option="no-output">
http://%HOSTIP:%NOLISTENPORT/76/ -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<features>
http
</features>
 <name>
HTTP, -O with no file name part in the URL
 </name>
 <command option="no-output">
http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER/ -O
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
Changes to jni/curl/tests/data/test77.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP with -z "older date"
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/77 -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /77 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>







|







|








31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
http
</server>
 <name>
HTTP with -z "older date"
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -z "dec 12 12:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test78.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP with -z "newer date"
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/78 -z "dec 12 11:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /78 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT

</protocol>
</verify>







|







|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP with -z "newer date"
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -z "dec 12 11:00:00 1999 GMT"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT

</protocol>
</verify>
Changes to jni/curl/tests/data/test79.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

contents
</data>
</reply>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

contents
</data>
</reply>
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
ftp
proxy
</features>
 <name>
FTP over HTTP proxy
 </name>
 <command>
ftp://%HOSTIP:%HTTPPORT/we/want/that/page/79 -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/79 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|







|








31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
ftp
proxy
</features>
 <name>
FTP over HTTP proxy
 </name>
 <command>
ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test8.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie parsing from header file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/8 -b log/heads8.txt
</command>

# We create this file before the command is invoked!
<file name="log/heads8.txt">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: foobar=name; domain=%HOSTIP; path=/;
Set-Cookie: mismatch=this; domain=%HOSTIP; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/w;
Set-Cookie: duplicate=test; domain=.0.0.1; domain=.0.0.1; path=/donkey;












|














|



|

|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<testcase>
<info>
<keywords>
HTTP
HTTP GET
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP with cookie parsing from header file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -b log/heads%TESTNUMBER.txt
</command>

# We create this file before the command is invoked!
<file name="log/heads%TESTNUMBER.txt">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: foobar=name; domain=%HOSTIP; path=/;
Set-Cookie: mismatch=this; domain=%HOSTIP; path="/silly/";
Set-Cookie: partmatch=present; domain=.0.0.1; path=/w;
Set-Cookie: duplicate=test; domain=.0.0.1; domain=.0.0.1; path=/donkey;
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
perl -e 'if ("%HOSTIP" !~ /\.0\.0\.1$/) {print "Test only works for HOSTIPs ending with .0.0.1"; exit(1)}'
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/8 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: name with space=is weird but; trailingspace=removed; cookie=perhaps; cookie=yes; foobar=name; blexp=yesyes

</protocol>
</verify>
</testcase>







|








52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
perl -e 'if ("%HOSTIP" !~ /\.0\.0\.1$/) {print "Test only works for HOSTIPs ending with .0.0.1"; exit(1)}'
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Cookie: name with space=is weird but; trailingspace=removed; cookie=perhaps; cookie=yes; foobar=name; blexp=yesyes

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test80.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication
 </name>
 <command>
http://test.80:%HTTPPORT/we/want/that/page/80 -p --proxy1.0 %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.80:%HTTPPORT HTTP/1.0
Host: test.80:%HTTPPORT
Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/80 HTTP/1.1
Host: test.80:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|















|




















|










|
|






|
|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication
 </name>
 <command>
http://test.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER -p --proxy1.0 %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.%TESTNUMBER:%HTTPPORT HTTP/1.0
Host: test.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test800.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP FETCH message
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/800/;MAILINDEX=1' -u '"user:sec"ret{'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN "\"user" "sec\"ret{"
A003 SELECT 800
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP FETCH message
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u '"user:sec"ret{'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN "\"user" "sec\"ret{"
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test801.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
imap
</server>
 <name>
IMAP FETCH message by MAILINDEX and SECTION
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/801/;MAILINDEX=123/;SECTION=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 801
A004 FETCH 123 BODY[1]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
imap
</server>
 <name>
IMAP FETCH message by MAILINDEX and SECTION
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=123/;SECTION=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 FETCH 123 BODY[1]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test802.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
imap
</server>
 <name>
IMAP SELECT UIDVALIDITY Success
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 802
A004 FETCH 123 BODY[TEXT]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
imap
</server>
 <name>
IMAP SELECT UIDVALIDITY Success
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 FETCH 123 BODY[TEXT]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test803.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
imap
</server>
 <name>
IMAP SELECT UIDVALIDITY Failure
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# CURLE_REMOTE_FILE_NOT_FOUND - UIDVALIDITY mismatch
<errorcode>
78
</errorcode>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 803
A004 LOGOUT
</protocol>
</verify>
</testcase>







|













|




20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<server>
imap
</server>
 <name>
IMAP SELECT UIDVALIDITY Failure
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# CURLE_REMOTE_FILE_NOT_FOUND - UIDVALIDITY mismatch
<errorcode>
78
</errorcode>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test804.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
imap
</server>
 <name>
IMAP doesn't perform SELECT if re-using the same mailbox
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/804/;MAILINDEX=123/;SECTION=1' 'imap://%HOSTIP:%IMAPPORT/804/;MAILINDEX=456/;SECTION=2.3' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 804
A004 FETCH 123 BODY[1]
A005 FETCH 456 BODY[2.3]
A006 LOGOUT
</protocol>
</verify>
</testcase>







|









|






24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
imap
</server>
 <name>
IMAP doesn't perform SELECT if re-using the same mailbox
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=123/;SECTION=1' 'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=456/;SECTION=2.3' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 FETCH 123 BODY[1]
A005 FETCH 456 BODY[2.3]
A006 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test805.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
imap
</server>
 <name>
IMAP APPEND message
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/805 -T log/upload805 -u user:secret
</command>
<file name="log/upload805">
Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
From: Fred Foobar <foobar@example.COM>
Subject: afternoon meeting
To: joe@example.com
Message-Id: <B27397-0100000@example.COM>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII

Hello Joe, do you think we can meet at 3:30 tomorrow?
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 APPEND 805 (\Seen) {295}
A004 LOGOUT
</protocol>
<upload>
Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
From: Fred Foobar <foobar@example.COM>
Subject: afternoon meeting
To: joe@example.com







|

|


















|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<server>
imap
</server>
 <name>
IMAP APPEND message
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -u user:secret
</command>
<file name="log/upload%TESTNUMBER">
Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
From: Fred Foobar <foobar@example.COM>
Subject: afternoon meeting
To: joe@example.com
Message-Id: <B27397-0100000@example.COM>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII

Hello Joe, do you think we can meet at 3:30 tomorrow?
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 APPEND %TESTNUMBER (\Seen) {295}
A004 LOGOUT
</protocol>
<upload>
Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
From: Fred Foobar <foobar@example.COM>
Subject: afternoon meeting
To: joe@example.com
Changes to jni/curl/tests/data/test806.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<testcase>
<info>
<keywords>
IMAP
Clear Text
LIST
</keywords>
</info>

#
# Server-side
<reply>
<data>
* LIST () "/" /806/blurdybloop
* LIST (\Noselect) "/" /806/foo
* LIST () "/" /806/foo/bar
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP LIST mailbox
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/806 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 LIST "806" *
A004 LOGOUT
</protocol>
</verify>
</testcase>













|
|
|













|









|




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<testcase>
<info>
<keywords>
IMAP
Clear Text
LIST
</keywords>
</info>

#
# Server-side
<reply>
<data>
* LIST () "/" /%TESTNUMBER/blurdybloop
* LIST (\Noselect) "/" /%TESTNUMBER/foo
* LIST () "/" /%TESTNUMBER/foo/bar
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP LIST mailbox
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 LIST "%TESTNUMBER" *
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test807.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</keywords>
</info>

#
# Server-side
<reply>
<data>
* LSUB () "/" /807/blurdybloop
* LSUB (\Noselect) "/" /807/foo
* LSUB () "/" /807/foo/bar
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP LSUB mailbox
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'LSUB "807" *'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 LSUB "807" *
A004 LOGOUT
</protocol>
</verify>
</testcase>







|
|
|













|









|




8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</keywords>
</info>

#
# Server-side
<reply>
<data>
* LSUB () "/" /%TESTNUMBER/blurdybloop
* LSUB (\Noselect) "/" /%TESTNUMBER/foo
* LSUB () "/" /%TESTNUMBER/foo/bar
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP LSUB mailbox
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'LSUB "%TESTNUMBER" *'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 LSUB "%TESTNUMBER" *
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test808.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP EXAMINE mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'EXAMINE 808'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 EXAMINE 808
A004 LOGOUT
</protocol>
</verify>
</testcase>







|









|




28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP EXAMINE mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'EXAMINE %TESTNUMBER'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 EXAMINE %TESTNUMBER
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test809.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</keywords>
</info>

#
# Server-side
<reply>
<data>
* STATUS 809 (MESSAGES 231 UIDNEXT 44292)
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP mailbox STATUS (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 STATUS 809 (UIDNEXT MESSAGES)
A004 LOGOUT
</protocol>
</verify>
</testcase>







|













|









|




8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</keywords>
</info>

#
# Server-side
<reply>
<data>
* STATUS %TESTNUMBER (MESSAGES 231 UIDNEXT 44292)
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP mailbox STATUS (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'STATUS %TESTNUMBER (UIDNEXT MESSAGES)'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 STATUS %TESTNUMBER (UIDNEXT MESSAGES)
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test81.
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/81 --proxy-user testuser:testpass -x http://%HOSTIP:%HTTPPORT --proxy-ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>







|









|






|







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy-user testuser:testpass -x http://%HOSTIP:%HTTPPORT --proxy-ntlm
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
Changes to jni/curl/tests/data/test810.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<testcase>
<info>
<keywords>
IMAP
Clear Text
SEARCH
</keywords>
</info>

#
# Server-side
<reply>
<data>
* SEARCH 1 123 456 810
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP SEARCH for NEW messages
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/810?NEW -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 810
A004 SEARCH NEW
A005 LOGOUT
</protocol>
</verify>
</testcase>













|













|









|





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<testcase>
<info>
<keywords>
IMAP
Clear Text
SEARCH
</keywords>
</info>

#
# Server-side
<reply>
<data>
* SEARCH 1 123 456 %TESTNUMBER
</data>
</reply>

#
# Client-side
<client>
<server>
imap
</server>
 <name>
IMAP SEARCH for NEW messages
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER?NEW -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 SEARCH NEW
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test811.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP CREATE mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'CREATE 811'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 CREATE 811
A004 LOGOUT
</protocol>
</verify>
</testcase>







|









|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP CREATE mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'CREATE %TESTNUMBER'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 CREATE %TESTNUMBER
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test812.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP DELETE mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'DELETE 812'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 DELETE 812
A004 LOGOUT
</protocol>
</verify>
</testcase>







|









|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP DELETE mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'DELETE %TESTNUMBER'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 DELETE %TESTNUMBER
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test813.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP RENAME mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'RENAME 666 813'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 RENAME 666 813
A004 LOGOUT
</protocol>
</verify>
</testcase>







|









|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP RENAME mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'RENAME 666 %TESTNUMBER'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 RENAME 666 %TESTNUMBER
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test814.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
imap
</server>
 <name>
IMAP CHECK mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/814 -u user:secret -X 'CHECK'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 814
A004 CHECK
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
imap
</server>
 <name>
IMAP CHECK mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -u user:secret -X 'CHECK'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 CHECK
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test815.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
imap
</server>
 <name>
IMAP STORE - delete message (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/815 -X CLOSE -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 815
A004 STORE 123 +Flags \Deleted
A005 CLOSE
A006 LOGOUT
</protocol>
</verify>
</testcase>







|









|






23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<server>
imap
</server>
 <name>
IMAP STORE - delete message (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -X CLOSE -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 STORE 123 +Flags \Deleted
A005 CLOSE
A006 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test816.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP STORE - delete message with confirmation (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/816 -X EXPUNGE -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 816
A004 STORE 123 +Flags \Deleted
A005 EXPUNGE
A006 LOGOUT
</protocol>
</verify>
</testcase>







|









|






26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP STORE - delete message with confirmation (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -X EXPUNGE -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 STORE 123 +Flags \Deleted
A005 EXPUNGE
A006 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test817.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP COPY message to mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'COPY 123 817'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 COPY 123 817
A004 LOGOUT
</protocol>
</verify>
</testcase>







|









|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
imap
</server>
 <name>
IMAP COPY message to mailbox (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT -u user:secret -X 'COPY 123 %TESTNUMBER'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 COPY 123 %TESTNUMBER
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test819.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP plain authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/819/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A003 SELECT 819
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|










|





33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP plain authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test82.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
http
</server>
 <name>
HTTP with proxy requiring NTLM, but we send Basic
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/82 --proxy-user testuser:testpass -x http://%HOSTIP:%HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/82 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>







|






|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
http
</server>
 <name>
HTTP with proxy requiring NTLM, but we send Basic
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy-user testuser:testpass -x http://%HOSTIP:%HTTPPORT
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
Changes to jni/curl/tests/data/test820.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
imap
</server>
 <name>
IMAP login authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/820/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE LOGIN
dXNlcg==
c2VjcmV0
A003 SELECT 820
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|











|





33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
imap
</server>
 <name>
IMAP login authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE LOGIN
dXNlcg==
c2VjcmV0
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test821.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<features>
crypto
</features>
 <name>
IMAP CRAM-MD5 authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/821/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE CRAM-MD5
dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==
A003 SELECT 821
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|










|





36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<features>
crypto
</features>
 <name>
IMAP CRAM-MD5 authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE CRAM-MD5
dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test822.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/822/;MAILINDEX=1' -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
A003 SELECT 822
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|














|





45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test823.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
debug
crypto
</features>
 <name>
IMAP DIGEST-MD5 authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/823/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE DIGEST-MD5
dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM1MzMzMjMxMzYzMzMyMzEzNzMzMzIzMSIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJpbWFwL2N1cmwiLHJlc3BvbnNlPTVlNzk5N2ZhZDZjMzNiZWJmZjk3OWJkY2I4ZmU3MTZiLHFvcD1hdXRo

A003 SELECT 823
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|











|





39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
debug
crypto
</features>
 <name>
IMAP DIGEST-MD5 authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE DIGEST-MD5
dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM1MzMzMjMxMzYzMzMyMzEzNzMzMzIzMSIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJpbWFwL2N1cmwiLHJlc3BvbnNlPTVlNzk5N2ZhZDZjMzNiZWJmZjk3OWJkY2I4ZmU3MTZiLHFvcD1hdXRo

A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test824.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (XOAUTH2) authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE XOAUTH2
dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
A003 SELECT 824
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|










|





33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (XOAUTH2) authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE XOAUTH2
dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test825.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP plain authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/825/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE PLAIN AHVzZXIAc2VjcmV0
A003 SELECT 825
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP plain authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE PLAIN AHVzZXIAc2VjcmV0
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test826.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
imap
</server>
 <name>
IMAP login authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/826/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE LOGIN dXNlcg==
c2VjcmV0
A003 SELECT 826
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|










|





34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
imap
</server>
 <name>
IMAP login authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE LOGIN dXNlcg==
c2VjcmV0
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test827.
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/827/;MAILINDEX=1' -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
A003 SELECT 827
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|













|





46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test828.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (XOAUTH2) authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
A003 SELECT 828
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (XOAUTH2) authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test829.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
imap
</server>
 <name>
IMAP with URL-encoded CR LF in the URL
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%0d%0a/829
</command>
</client>

#
<verify>
# 3 - CURLE_URL_MALFORMAT
<errorcode>







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
imap
</server>
 <name>
IMAP with URL-encoded CR LF in the URL
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/%0d%0a/%TESTNUMBER
</command>
</client>

#
<verify>
# 3 - CURLE_URL_MALFORMAT
<errorcode>
Changes to jni/curl/tests/data/test83.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP over proxy-tunnel with site authentication
 </name>
 <command>
http://test.83:%HTTPPORT/we/want/that/page/83 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self'
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.83:%HTTPPORT HTTP/1.1
Host: test.83:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/83 HTTP/1.1
Host: test.83:%HTTPPORT
Authorization: Basic aWFtOm15OjtzZWxm
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|















|




















|










|
|





|
|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP over proxy-tunnel with site authentication
 </name>
 <command>
http://test.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self'
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol>
GET /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
Authorization: Basic aWFtOm15OjtzZWxm
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test830.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<features>
crypto
</features>
 <name>
IMAP CRAM-MD5 graceful cancellation
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/830/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<features>
crypto
</features>
 <name>
IMAP CRAM-MD5 graceful cancellation
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test831.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/831/;MAILINDEX=1' -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
Changes to jni/curl/tests/data/test832.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
debug
crypto
</features>
 <name>
IMAP DIGEST-MD5 graceful cancellation
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/832/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
debug
crypto
</features>
 <name>
IMAP DIGEST-MD5 graceful cancellation
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test833.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<features>
crypto
</features>
 <name>
IMAP CRAM-MD5 authentication with SASL downgrade
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/833/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE CRAM-MD5
*
A003 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A004 SELECT 833
A005 FETCH 1 BODY[]
A006 LOGOUT
</protocol>
</verify>
</testcase>







|












|





40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<features>
crypto
</features>
 <name>
IMAP CRAM-MD5 authentication with SASL downgrade
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE CRAM-MD5
*
A003 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A004 SELECT %TESTNUMBER
A005 FETCH 1 BODY[]
A006 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test834.
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/834/;MAILINDEX=1' -u user:secret
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
A003 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A004 SELECT 834
A005 FETCH 1 BODY[]
A006 LOGOUT
</protocol>
</verify>
</testcase>







|
















|





48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
A003 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A004 SELECT %TESTNUMBER
A005 FETCH 1 BODY[]
A006 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test835.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
debug
crypto
</features>
 <name>
IMAP DIGEST-MD5 authentication with SASL downgrade
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/835/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE DIGEST-MD5
*
A003 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A004 SELECT 835
A005 FETCH 1 BODY[]
A006 LOGOUT
</protocol>
</verify>
</testcase>







|












|





42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
debug
crypto
</features>
 <name>
IMAP DIGEST-MD5 authentication with SASL downgrade
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE DIGEST-MD5
*
A003 AUTHENTICATE PLAIN
AHVzZXIAc2VjcmV0
A004 SELECT %TESTNUMBER
A005 FETCH 1 BODY[]
A006 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test836.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
imap
</server>
 <name>
IMAP multiple connection authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/836/;MAILINDEX=1' -u user.one:secret -: 'imap://%HOSTIP:%IMAPPORT/836/;UID=2' -u user.two:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user.one secret
A003 SELECT 836
A004 FETCH 1 BODY[]
A005 LOGOUT
B001 CAPABILITY
B002 LOGIN user.two secret
B003 SELECT 836
B004 FETCH 2 BODY[]
B005 LOGOUT
</protocol>
</verify>
</testcase>







|









|




|





32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
imap
</server>
 <name>
IMAP multiple connection authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user.one:secret -: 'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;UID=2' -u user.two:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user.one secret
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
B001 CAPABILITY
B002 LOGIN user.two secret
B003 SELECT %TESTNUMBER
B004 FETCH 2 BODY[]
B005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test837.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication
 </name>
 <command>
'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/837/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL
dXNlcg==
A003 SELECT 837
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|










|





33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication
 </name>
 <command>
'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL
dXNlcg==
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test838.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication without credentials
 </name>
 <command>
'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/838/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL
=
A003 SELECT 838
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|










|





33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication without credentials
 </name>
 <command>
'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL
=
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test839.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication with initial response
 </name>
 <command>
'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/839/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL dXNlcg==
A003 SELECT 839
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication with initial response
 </name>
 <command>
'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL dXNlcg==
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test84.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

contents
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP over proxy with site authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/84 -x %HOSTIP:%HTTPPORT --user iam:myself
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/84 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|


















|










|









8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes

contents
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP over proxy with site authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT --user iam:myself
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test840.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication with initial response without credentials
 </name>
 <command>
'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/840/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL =
A003 SELECT 840
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP external authentication with initial response without credentials
 </name>
 <command>
'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE EXTERNAL =
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test841.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
imap
</server>
 <name>
IMAP custom request doesn't check continuation data
 </name>
 <command>
 imap://%HOSTIP:%IMAPPORT/841/ -u user:secret -X 'FETCH 123 BODY[1]'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT 841
A004 FETCH 123 BODY[1]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
imap
</server>
 <name>
IMAP custom request doesn't check continuation data
 </name>
 <command>
 imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/ -u user:secret -X 'FETCH 123 BODY[1]'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN user secret
A003 SELECT %TESTNUMBER
A004 FETCH 123 BODY[1]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test842.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/842/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
# The protocol section doesn't support ways of specifying the raw data in the
# base64 encoded message so we must assert this
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%IMAPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
A003 SELECT 842
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|












|





34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) authentication
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
# The protocol section doesn't support ways of specifying the raw data in the
# base64 encoded message so we must assert this
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%IMAPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test843.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/843/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%IMAPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
A003 SELECT 843
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) authentication with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%IMAPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test844.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/844/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test845.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/845/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
imap
</server>
 <name>
IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation with initial response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test846.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
imap
</server>
 <name>
IMAP PREAUTH response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/846/;MAILINDEX=1' -u notused:still-provided
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 SELECT 846
A003 FETCH 1 BODY[]
A004 LOGOUT
</protocol>
</verify>
</testcase>







|








|





29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
imap
</server>
 <name>
IMAP PREAUTH response
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u notused:still-provided
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 SELECT %TESTNUMBER
A003 FETCH 1 BODY[]
A004 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test847.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP FETCH message
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/847/;UID=1' -u '"user:sec"ret{'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN "\"user" "sec\"ret{"
A003 SELECT 847
A004 UID FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
imap
</server>
 <name>
IMAP FETCH message
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;UID=1' -u '"user:sec"ret{'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN "\"user" "sec\"ret{"
A003 SELECT %TESTNUMBER
A004 UID FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test848.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP plain authentication with alternative authorization identity
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/848/;MAILINDEX=1' -u user:secret --sasl-authzid shared-mailbox
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE PLAIN
c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ=
A003 SELECT 848
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|










|





33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
imap
</server>
 <name>
IMAP plain authentication with alternative authorization identity
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret --sasl-authzid shared-mailbox
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE PLAIN
c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ=
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test849.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
imap
</server>
 <name>
IMAP plain authentication with alternative authorization identity (Not authorized)
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
imap
</server>
 <name>
IMAP plain authentication with alternative authorization identity (Not authorized)
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test85.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP over proxy with site and proxy authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/85 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/85 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|



















|










|










10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP over proxy with site and proxy authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test850.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
pop3
</server>
 <name>
POP3 RETR message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/850 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
RETR 850
QUIT
</protocol>
</verify>
</testcase>







|










|




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<server>
pop3
</server>
 <name>
POP3 RETR message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test851.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</info>

#
# Server-side
<reply>
<servercmd>
# include the '.\r\n' 3-byte trailer to end the transfer properly!
REPLY LIST +OK 851 100\r\n.
</servercmd>
</reply>

#
# Client-side
<client>
<server>
pop3
</server>
 <name>
POP3 LIST one message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/851 -l -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
LIST 851
QUIT
</protocol>
</verify>
</testcase>







|













|










|




8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</info>

#
# Server-side
<reply>
<servercmd>
# include the '.\r\n' 3-byte trailer to end the transfer properly!
REPLY LIST +OK %TESTNUMBER 100\r\n.
</servercmd>
</reply>

#
# Client-side
<client>
<server>
pop3
</server>
 <name>
POP3 LIST one message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -l -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
LIST %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test852.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
pop3
</server>
 <name>
POP3 LIST invalid message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/852 -l -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
CAPA
USER user
PASS secret
LIST 852
QUIT
</protocol>
</verify>
</testcase>







|













|




22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
pop3
</server>
 <name>
POP3 LIST invalid message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -l -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
CAPA
USER user
PASS secret
LIST %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test855.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
pop3
</server>
 <name>
POP3 RETR invalid message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/855 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
CAPA
USER user
PASS secret
RETR 855
QUIT
</protocol>
</verify>
</testcase>







|













|




22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
pop3
</server>
 <name>
POP3 RETR invalid message
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
CAPA
USER user
PASS secret
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test856.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
pop3
</server>
 <name>
POP3 invalid login
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/856 -u user:wrong
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<server>
pop3
</server>
 <name>
POP3 invalid login
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:wrong
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test857.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
pop3
</server>
 <name>
POP3 RETR message with dot-prefixed line
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/857 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
RETR 857
QUIT
</protocol>
</verify>
</testcase>







|










|




38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<server>
pop3
</server>
 <name>
POP3 RETR message with dot-prefixed line
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test858.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
pop3
</server>
 <name>
POP3 DELE message (CUSTOMREQUEST)
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/858 -u user:secret -X DELE -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
DELE 858
QUIT
</protocol>
</verify>
</testcase>







|










|




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
pop3
</server>
 <name>
POP3 DELE message (CUSTOMREQUEST)
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret -X DELE -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
DELE %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test86.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<server>
http
</server>
 <name>
HTTP, urlglob []-retrieval and -o #[num] usage
 </name>
 <command option="no-output">
"http://%HOSTIP:%HTTPPORT/[860001-860003]" -o "log/dumpit#1.dump"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /860001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /860002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /860003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# we check the second file
<file name="log/dumpit860002.dump">
HTTP/1.0 200 OK
Content-Type: text/html
Funny-head: swsclose

crap data
</file>
</verify>
</testcase>







|







|




|




|







|








53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<server>
http
</server>
 <name>
HTTP, urlglob []-retrieval and -o #[num] usage
 </name>
 <command option="no-output">
"http://%HOSTIP:%HTTPPORT/[%TESTNUMBER0001-%TESTNUMBER0003]" -o "log/dumpit#1.dump"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER0003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>

# we check the second file
<file name="log/dumpit%TESTNUMBER0002.dump">
HTTP/1.0 200 OK
Content-Type: text/html
Funny-head: swsclose

crap data
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test862.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
pop3
</server>
 <name>
POP3 retrieve message header (CUSTOMREQUEST)
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT -u user:secret -X 'TOP 862 0'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
TOP 862 0
QUIT
</protocol>
</verify>
</testcase>







|










|




28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
pop3
</server>
 <name>
POP3 retrieve message header (CUSTOMREQUEST)
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT -u user:secret -X 'TOP %TESTNUMBER 0'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user
PASS secret
TOP %TESTNUMBER 0
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test864.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<features>
crypto
</features>
 <name>
POP3 APOP authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/864 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
APOP user 7501b4cdc224d469940e65e7b5e4d6eb
RETR 864
QUIT
</protocol>
</verify>
</testcase>







|









|




33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<features>
crypto
</features>
 <name>
POP3 APOP authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
APOP user 7501b4cdc224d469940e65e7b5e4d6eb
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test865.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 plain authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/865 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR 865
QUIT
</protocol>
</verify>
</testcase>







|










|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 plain authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test866.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
pop3
</server>
 <name>
POP3 login authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/866 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH LOGIN
dXNlcg==
c2VjcmV0
RETR 866
QUIT
</protocol>
</verify>
</testcase>







|











|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
pop3
</server>
 <name>
POP3 login authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH LOGIN
dXNlcg==
c2VjcmV0
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test867.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<features>
crypto
</features>
 <name>
POP3 CRAM-MD5 authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/867 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH CRAM-MD5
dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==
RETR 867
QUIT
</protocol>
</verify>
</testcase>







|










|




38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<features>
crypto
</features>
 <name>
POP3 CRAM-MD5 authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH CRAM-MD5
dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test868.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/868 -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
RETR 868
QUIT
</protocol>
</verify>
</testcase>







|














|




47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test869.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
debug
crypto
</features>
 <name>
POP3 DIGEST-MD5 authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/869 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH DIGEST-MD5
dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM1MzMzMjMxMzYzMzMyMzEzNzMzMzIzMSIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJwb3AvY3VybCIscmVzcG9uc2U9YzNhMGFiZTc5NDYyNTIyNGY5Njg3YTYzMTc3ZmRhNWIscW9wPWF1dGg=

RETR 869
QUIT
</protocol>
</verify>
</testcase>







|











|




41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
debug
crypto
</features>
 <name>
POP3 DIGEST-MD5 authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH DIGEST-MD5
dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM1MzMzMjMxMzYzMzMyMzEzNzMzMzIzMSIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJwb3AvY3VybCIscmVzcG9uc2U9YzNhMGFiZTc5NDYyNTIyNGY5Njg3YTYzMTc3ZmRhNWIscW9wPWF1dGg=

RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test87.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<features>
http
</features>
 <name>
urlglob with out of range -o #[num] usage
 </name>
 <command option="no-output">
"http://%HOSTIP:%HTTPPORT/[870001-870002]" -o "log/dumpit87-#2.dump"
</command>
</client>

#
# Verify data after the test has been "shot". Note that the command line
# will write both responses into the same file name so only the second
# survives
#
<verify>
<file name="log/dumpit87-#2.dump">
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16

two is nice too
</file>
</verify>







|









|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<features>
http
</features>
 <name>
urlglob with out of range -o #[num] usage
 </name>
 <command option="no-output">
"http://%HOSTIP:%HTTPPORT/[%TESTNUMBER0001-%TESTNUMBER0002]" -o "log/dumpit%TESTNUMBER-#2.dump"
</command>
</client>

#
# Verify data after the test has been "shot". Note that the command line
# will write both responses into the same file name so only the second
# survives
#
<verify>
<file name="log/dumpit%TESTNUMBER-#2.dump">
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16

two is nice too
</file>
</verify>
Changes to jni/curl/tests/data/test870.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (XOAUTH2) authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/870 -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH XOAUTH2
dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
RETR 870
QUIT
</protocol>
</verify>
</testcase>







|










|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (XOAUTH2) authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH XOAUTH2
dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test871.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 plain authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/871 -u user:secret --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH PLAIN AHVzZXIAc2VjcmV0
RETR 871
QUIT
</protocol>
</verify>
</testcase>







|









|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 plain authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH PLAIN AHVzZXIAc2VjcmV0
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test872.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 login authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/872 -u user:secret --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH LOGIN dXNlcg==
c2VjcmV0
RETR 872
QUIT
</protocol>
</verify>
</testcase>







|










|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 login authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH LOGIN dXNlcg==
c2VjcmV0
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test873.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/873 -u testuser:testpass --sasl-ir
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
RETR 873
QUIT
</protocol>
</verify>
</testcase>







|













|




47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u testuser:testpass --sasl-ir
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test874.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (XOAUTH2) authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/874 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
RETR 874
QUIT
</protocol>
</verify>
</testcase>







|









|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (XOAUTH2) authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test875.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
pop3
</server>
 <name>
POP3 with URL-encoded CR LF in the URL
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%0d%0a/875
</command>
</client>

#
<verify>
# 3 - CURLE_URL_MALFORMAT
<errorcode>







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
pop3
</server>
 <name>
POP3 with URL-encoded CR LF in the URL
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%0d%0a/%TESTNUMBER
</command>
</client>

#
<verify>
# 3 - CURLE_URL_MALFORMAT
<errorcode>
Changes to jni/curl/tests/data/test876.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<features>
crypto
</features>
 <name>
POP3 CRAM-MD5 graceful cancellation
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/876 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<features>
crypto
</features>
 <name>
POP3 CRAM-MD5 graceful cancellation
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test877.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/877 -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#







|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u testuser:testpass
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
Changes to jni/curl/tests/data/test878.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
debug
crypto
</features>
 <name>
POP3 DIGEST-MD5 graceful cancellation
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/878 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
debug
crypto
</features>
 <name>
POP3 DIGEST-MD5 graceful cancellation
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test879.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<features>
crypto
</features>
 <name>
POP3 CRAM-MD5 authentication with SASL downgrade
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/879 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH CRAM-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR 879
QUIT
</protocol>
</verify>
</testcase>







|












|




42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<features>
crypto
</features>
 <name>
POP3 CRAM-MD5 authentication with SASL downgrade
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH CRAM-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test88.
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
!SSPI
crypto
</features>
 <name>
HTTP PUT with Digest authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/88 -T log/put88 -u testuser:testpass --digest
</command>
<file name="log/put88">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /88 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

PUT /88 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/88", response="78a49fa53d0c228778297687d4168e71"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line







|

|










|





|

|







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
!SSPI
crypto
</features>
 <name>
HTTP PUT with Digest authorization
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --digest
</command>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 0

PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="78a49fa53d0c228778297687d4168e71"
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
Expect: 100-continue

This is data we upload with PUT
a second line
Changes to jni/curl/tests/data/test880.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/880 -u user:secret
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR 880
QUIT
</protocol>
</verify>
</testcase>







|
















|




50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test881.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
debug
crypto
</features>
 <name>
POP3 DIGEST-MD5 authentication with SASL downgrade
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/881 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH DIGEST-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR 881
QUIT
</protocol>
</verify>
</testcase>







|












|




44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
debug
crypto
</features>
 <name>
POP3 DIGEST-MD5 authentication with SASL downgrade
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH DIGEST-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test882.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
pop3
</server>
 <name>
POP3 multiple connection authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/882001 -u user.one:secret -: pop3://%HOSTIP:%POP3PORT/882002 -u user.two:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user.one
PASS secret
RETR 882001
QUIT
CAPA
USER user.two
PASS secret
RETR 882002
QUIT
</protocol>
</verify>
</testcase>







|










|




|




31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
pop3
</server>
 <name>
POP3 multiple connection authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER001 -u user.one:secret -: pop3://%HOSTIP:%POP3PORT/%TESTNUMBER002 -u user.two:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
USER user.one
PASS secret
RETR %TESTNUMBER001
QUIT
CAPA
USER user.two
PASS secret
RETR %TESTNUMBER002
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test883.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 external authentication
 </name>
 <command>
'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/883'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL
dXNlcg==
RETR 883
QUIT
</protocol>
</verify>
</testcase>







|










|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 external authentication
 </name>
 <command>
'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/%TESTNUMBER'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL
dXNlcg==
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test884.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 external authentication without credentials
 </name>
 <command>
'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/884'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL
=
RETR 884
QUIT
</protocol>
</verify>
</testcase>







|










|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 external authentication without credentials
 </name>
 <command>
'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/%TESTNUMBER'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL
=
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test885.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 external authentication with initial response
 </name>
 <command>
'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/885' --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL dXNlcg==
RETR 885
QUIT
</protocol>
</verify>
</testcase>







|









|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 external authentication with initial response
 </name>
 <command>
'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/%TESTNUMBER' --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL dXNlcg==
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test886.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 external authentication with initial response without credentials
 </name>
 <command>
'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/886' --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL =
RETR 886
QUIT
</protocol>
</verify>
</testcase>







|









|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<server>
pop3
</server>
 <name>
POP3 external authentication with initial response without credentials
 </name>
 <command>
'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/%TESTNUMBER' --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH EXTERNAL =
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test887.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/887 -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%POP3PORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
RETR 887
QUIT
</protocol>
</verify>
</testcase>







|










|




36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) authentication
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%POP3PORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test888.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/888 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%POP3PORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
RETR 888
QUIT
</protocol>
</verify>
</testcase>







|









|




36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) authentication with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%POP3PORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test889.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) failure as continuation
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/889 -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) failure as continuation
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user --oauth2-bearer mF_9.B5f-4.1JqM
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test89.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/890010

</data1002>

# This is the first reply after the redirection
<data1011>
HTTP/1.1 401 Now gimme that second round of crap
Server: Microsoft-IIS/5.0







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/%TESTNUMBER0010

</data1002>

# This is the first reply after the redirection
<data1011>
HTTP/1.1 401 Now gimme that second round of crap
Server: Microsoft-IIS/5.0
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/890010

HTTP/1.1 401 Now gimme that second round of crap
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==








|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/%TESTNUMBER0010

HTTP/1.1 401 Now gimme that second round of crap
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/89 -u testuser:testpass --ntlm -L
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /89 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /89 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

GET /you/890010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /you/890010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADYzMjE3MzIxAAAAAAAAAAAAAAAAAAAAAEcJ4YHOeb5ga2TCPwDhkyUIuHjBUHcLaHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|





|





|





|








102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -L
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

GET /you/%TESTNUMBER0010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /you/%TESTNUMBER0010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADYzMjE3MzIxAAAAAAAAAAAAAAAAAAAAAEcJ4YHOeb5ga2TCPwDhkyUIuHjBUHcLaHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test890.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) failure as continuation with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/890 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<server>
pop3
</server>
 <name>
POP3 OAuth 2.0 (OAUTHBEARER) failure as continuation with initial response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test891.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<features>
crypto
</features>
 <name>
POP3 with short authentication response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/891 -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<features>
crypto
</features>
 <name>
POP3 with short authentication response
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
Changes to jni/curl/tests/data/test892.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 plain authentication with alternative authorization identity
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/892 -u user:secret --sasl-authzid shared-mailbox
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH PLAIN
c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ=
RETR 892
QUIT
</protocol>
</verify>
</testcase>







|










|




35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<server>
pop3
</server>
 <name>
POP3 plain authentication with alternative authorization identity
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret --sasl-authzid shared-mailbox
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
CAPA
AUTH PLAIN
c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ=
RETR %TESTNUMBER
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test893.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
pop3
</server>
 <name>
POP3 plain authentication with alternative authorization identity (Not authorized)
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/893 -u kurt:xipj3plmq --sasl-authzid ursel
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
pop3
</server>
 <name>
POP3 plain authentication with alternative authorization identity (Not authorized)
 </name>
 <command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u kurt:xipj3plmq --sasl-authzid ursel
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
Changes to jni/curl/tests/data/test894.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
pop3
</server>
 <name>
POP3 with CR in username
 </name>
 <command>
pop3://user%0dFRIGGING_cmd:secret@%HOSTIP:%POP3PORT/894
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# malformed URL







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<server>
pop3
</server>
 <name>
POP3 with CR in username
 </name>
 <command>
pop3://user%0dFRIGGING_cmd:secret@%HOSTIP:%POP3PORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# malformed URL
Changes to jni/curl/tests/data/test895.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
imap
</server>
 <name>
IMAP with --login-options 'AUTH=*'
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=*'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN "\"user" "sec\"ret{"
A003 SELECT 895
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>







|









|





28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
imap
</server>
 <name>
IMAP with --login-options 'AUTH=*'
 </name>
 <command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=*'
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
A001 CAPABILITY
A002 LOGIN "\"user" "sec\"ret{"
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test9.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
HTTP file upload
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/9 -F name=daniel -F tool=curl -F file=@log/test9.txt
</command>
# We create this file before the command is invoked!
<file name="log/test9.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/9 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 407
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763












|
















|


|












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
HTTP file upload
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake

blablabla

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP RFC1867-type formposting
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F name=daniel -F tool=curl -F file=@log/test%TESTNUMBER.txt
</command>
# We create this file before the command is invoked!
<file name="log/test%TESTNUMBER.txt">
foo-
This is a moo-
bar
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^(Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 407
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763

------------------------------9ef8d6205763
Changes to jni/curl/tests/data/test90.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/900010

</data1002>

# This is the first reply after the redirection
<data10>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/%TESTNUMBER0010

</data1002>

# This is the first reply after the redirection
<data10>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/900010

HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Basic
WWW-Authenticate: Wild-and-crazy
WWW-Authenticate: NTLM
Content-Type: text/html; charset=iso-8859-1







|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

HTTP/1.1 301 Things are fine in server land swsclose
Server: Microsoft-IIS/5.0
Connection: close
Location: /you/%TESTNUMBER0010

HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Basic
WWW-Authenticate: Wild-and-crazy
WWW-Authenticate: NTLM
Content-Type: text/html; charset=iso-8859-1
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/90 -u testuser:testpass --anyauth -L
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /90 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /90 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /90 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

GET /you/900010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /you/900010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /you/900010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADYzMjE3MzIxAAAAAAAAAAAAAAAAAAAAAEcJ4YHOeb5ga2TCPwDhkyUIuHjBUHcLaHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|




|





|





|




|





|








140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth -L
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

GET /you/%TESTNUMBER0010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /you/%TESTNUMBER0010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /you/%TESTNUMBER0010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADYzMjE3MzIxAAAAAAAAAAAAAAAAAAAAAEcJ4YHOeb5ga2TCPwDhkyUIuHjBUHcLaHRlc3R1c2VyY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test900.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/900 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 900
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test901.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.

.

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/901 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 901
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.

.

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test902.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/902 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 902
HELO 902
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|







|
|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
HELO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test903.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP plain authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/903 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 903
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP plain authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test904.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP login authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/904 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 904
AUTH LOGIN
dXNlcg==
c2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP login authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH LOGIN
dXNlcg==
c2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
Changes to jni/curl/tests/data/test905.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 <name>
SMTP CRAM-MD5 authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/905 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 905
AUTH CRAM-MD5
dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 <name>
SMTP CRAM-MD5 authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH CRAM-MD5
dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test906.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/906 --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 906
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT







|










|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
Changes to jni/curl/tests/data/test907.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 <name>
SMTP DIGEST-MD5 authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/907 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 907
AUTH DIGEST-MD5
dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM1MzMzMjMxMzYzMzMyMzEzNzMzMzIzMSIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJzbXRwL2N1cmwiLHJlc3BvbnNlPTk0M2YxNjk1OWYxY2M2ZjA3ZTZmMDk0ZjVkYmQ0NzNlLHFvcD1hdXRo

MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT







|







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 <name>
SMTP DIGEST-MD5 authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH DIGEST-MD5
dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM1MzMzMjMxMzYzMzMyMzEzNzMzMzIzMSIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJzbXRwL2N1cmwiLHJlc3BvbnNlPTk0M2YxNjk1OWYxY2M2ZjA3ZTZmMDk0ZjVkYmQ0NzNlLHFvcD1hdXRo

MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
Changes to jni/curl/tests/data/test908.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP OAuth 2.0 (XOAUTH2) authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/908 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 908
AUTH XOAUTH2
dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP OAuth 2.0 (XOAUTH2) authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH XOAUTH2
dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test909.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<client>
<server>
smtp
</server>
 <name>
SMTP without SIZE support
 </name>
<file name="log/test909.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/909 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test909.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 909
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|






|







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<client>
<server>
smtp
</server>
 <name>
SMTP without SIZE support
 </name>
<file name="log/test%TESTNUMBER.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test%TESTNUMBER.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test91.
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/91 --anyauth -u mydomain\\myself:secret
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /91 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /91 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /91 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAAIAAgAfgAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAAKBS3rdGYZEGsqW8otYHWXWBxC5mCuFmYm15ZG9tYWlubXlzZWxmY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>







|









|




|





|







86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --anyauth -u mydomain\\myself:secret
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/%VERSION
Accept: */*

GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAAIAAgAfgAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAAKBS3rdGYZEGsqW8otYHWXWBxC5mCuFmYm15ZG9tYWlubXlzZWxmY3VybGhvc3Q=
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
Changes to jni/curl/tests/data/test910.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin nonewline="yes">
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/910 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 910
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin nonewline="yes">
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test911.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 </name>

<stdin nonewline="yes">

</stdin>

 <command>
smtp://%HOSTIP:%SMTPPORT/911 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 911
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
.







|







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 </name>

<stdin nonewline="yes">

</stdin>

 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
.
Changes to jni/curl/tests/data/test912.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<client>
<server>
smtp
</server>
 <name>
SMTP with SIZE support
 </name>
<file name="log/test912.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/912 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test912.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 912
MAIL FROM:<sender@example.com> SIZE=38
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|






|







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<client>
<server>
smtp
</server>
 <name>
SMTP with SIZE support
 </name>
<file name="log/test%TESTNUMBER.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test%TESTNUMBER.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com> SIZE=38
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test913.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<client>
<server>
smtp
</server>
 <name>
SMTP with large message SIZE
 </name>
<file name="log/test913.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/913 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test913.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 913
MAIL FROM:<sender@example.com> SIZE=38
QUIT
</protocol>
</verify>
</testcase>







|






|











|





19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<client>
<server>
smtp
</server>
 <name>
SMTP with large message SIZE
 </name>
<file name="log/test%TESTNUMBER.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test%TESTNUMBER.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com> SIZE=38
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test914.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<client>
<server>
smtp
</server>
 <name>
SMTP invalid --mail-from
 </name>
<file name="log/test914.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/914 --mail-rcpt recipient@example.com --mail-from invalid -T log/test914.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 914
MAIL FROM:<invalid>
QUIT
</protocol>
</verify>
</testcase>







|






|











|





18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<client>
<server>
smtp
</server>
 <name>
SMTP invalid --mail-from
 </name>
<file name="log/test%TESTNUMBER.eml">
From: different
To: another

body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from invalid -T log/test%TESTNUMBER.eml
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<invalid>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test915.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/915 --mail-rcpt recipient@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 915
MAIL FROM:<>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test916.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/916 --mail-rcpt invalid --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 916
MAIL FROM:<sender@example.com>
RCPT TO:<invalid>
QUIT
</protocol>
</verify>
</testcase>







|











|






22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt invalid --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<invalid>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test917.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/917 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 917
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
RCPT TO:<recipient.three@example.com>
RCPT TO:<recipient.four@example.com>
RCPT TO:<recipient.five@example.com>
DATA







|







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<recipient.two@example.com>
RCPT TO:<recipient.three@example.com>
RCPT TO:<recipient.four@example.com>
RCPT TO:<recipient.five@example.com>
DATA
Changes to jni/curl/tests/data/test918.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/918 --mail-rcpt recipient.one@example.com --mail-rcpt invalid --mail-rcpt recipient.three@example.com --mail-rcpt sTrAnGe --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 918
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<invalid>
QUIT
</protocol>
</verify>
</testcase>







|











|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<stdin>
From: different
To: another

body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient.one@example.com --mail-rcpt invalid --mail-rcpt recipient.three@example.com --mail-rcpt sTrAnGe --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient.one@example.com>
RCPT TO:<invalid>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test919.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP plain authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/919 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 919
AUTH PLAIN AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP plain authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH PLAIN AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Changes to jni/curl/tests/data/test92.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP resume transfer with the whole file already downloaded
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/92 -C 87
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/92 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=87-
User-Agent: curl/%VERSION
Accept: */*

</protocol>








|






|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<server>
http
</server>
 <name>
HTTP resume transfer with the whole file already downloaded
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -C 87
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
GET /want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=87-
User-Agent: curl/%VERSION
Accept: */*

</protocol>

Changes to jni/curl/tests/data/test920.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP login authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/920 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 920
AUTH LOGIN dXNlcg==
c2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP login authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH LOGIN dXNlcg==
c2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test921.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/921 --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass --sasl-ir -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 921
AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|










|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass --sasl-ir -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBADQzMjE1MzIxAAAAAAAAAAAAAAAAAAAAADj3hs3u3j0kgJqCrLM+74BmaoNHDfIJjHRlc3R1c2VyY3VybGhvc3Q=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test922.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP OAuth 2.0 (XOAUTH2) authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/922 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 922
AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP OAuth 2.0 (XOAUTH2) authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Changes to jni/curl/tests/data/test923.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
smtp
</server>
 <name>
SMTP VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/923 --mail-rcpt recipient
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 923
VRFY recipient
QUIT
</protocol>
</verify>
</testcase>







|







|





17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
smtp
</server>
 <name>
SMTP VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
VRFY recipient
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test924.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
smtp
</server>
 <name>
SMTP ambiguous VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/924 --mail-rcpt smith
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 924
VRFY smith
QUIT
</protocol>
</verify>
</testcase>







|







|





23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
smtp
</server>
 <name>
SMTP ambiguous VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt smith
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
VRFY smith
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test925.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
smtp
</server>
 <name>
SMTP external VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/925 --mail-rcpt user@example.net
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 925
VRFY user@example.net
QUIT
</protocol>
</verify>
</testcase>







|







|





20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<server>
smtp
</server>
 <name>
SMTP external VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt user@example.net
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
VRFY user@example.net
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test926.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
smtp
</server>
 <name>
SMTP unknown user VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/926 --mail-rcpt recipient
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO 926
VRFY recipient
QUIT
</protocol>
</verify>
</testcase>







|











|





20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<server>
smtp
</server>
 <name>
SMTP unknown user VRFY
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO %TESTNUMBER
VRFY recipient
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test927.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
smtp
</server>
 <name>
SMTP mailing list EXPN (CUSTOMREQUEST)
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/927 --mail-rcpt Friends -X EXPN
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 927
EXPN Friends
QUIT
</protocol>
</verify>
</testcase>







|







|





23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<server>
smtp
</server>
 <name>
SMTP mailing list EXPN (CUSTOMREQUEST)
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Friends -X EXPN
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
EXPN Friends
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test928.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
smtp
</server>
 <name>
SMTP HELP
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/928
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 928
HELP
QUIT
</protocol>
</verify>
</testcase>







|







|





21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<server>
smtp
</server>
 <name>
SMTP HELP
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
HELP
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test929.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
smtp
</server>
 <name>
SMTP NOOP (CUSTOMREQUEST)
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/929 -X NOOP -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 929
NOOP
QUIT
</protocol>
</verify>
</testcase>







|







|





18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
smtp
</server>
 <name>
SMTP NOOP (CUSTOMREQUEST)
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER -X NOOP -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
NOOP
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test93.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP GET with failed proxy auth
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/93 -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/93 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>







|










|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP GET with failed proxy auth
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
Changes to jni/curl/tests/data/test930.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
smtp
</server>
 <name>
SMTP RSET (CUSTOMREQUEST)
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/930 -X RSET -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 930
RSET
QUIT
</protocol>
</verify>
</testcase>







|







|





18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<server>
smtp
</server>
 <name>
SMTP RSET (CUSTOMREQUEST)
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER -X RSET -I
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
RSET
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test931.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
smtp
</server>
 <name>
SMTP with URL-encoded CR LF in the URL
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%0d%0a/931
</command>
</client>

#
<verify>
# 3 - CURLE_URL_MALFORMAT
<errorcode>







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<server>
smtp
</server>
 <name>
SMTP with URL-encoded CR LF in the URL
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%0d%0a/%TESTNUMBER
</command>
</client>

#
<verify>
# 3 - CURLE_URL_MALFORMAT
<errorcode>
Changes to jni/curl/tests/data/test932.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<features>
crypto
</features>
 <name>
SMTP CRAM-MD5 graceful cancellation
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/932 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO 932
AUTH CRAM-MD5
*
</protocol>
</verify>
</testcase>







|














|





29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<features>
crypto
</features>
 <name>
SMTP CRAM-MD5 graceful cancellation
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO %TESTNUMBER
AUTH CRAM-MD5
*
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test933.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
smtp://%HOSTIP:%SMTPPORT/933 --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO 933
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
</protocol>
</verify>
</testcase>







|

















|






37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO %TESTNUMBER
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test934.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
debug
crypto
</features>
 <name>
SMTP DIGEST-MD5 graceful cancellation
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/934 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO 934
AUTH DIGEST-MD5
*
</protocol>
</verify>
</testcase>







|














|





31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
debug
crypto
</features>
 <name>
SMTP DIGEST-MD5 graceful cancellation
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO %TESTNUMBER
AUTH DIGEST-MD5
*
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test935.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 <name>
SMTP CRAM-MD5 authentication with SASL downgrade
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/935 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 935
AUTH CRAM-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA







|







|







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 <name>
SMTP CRAM-MD5 authentication with SASL downgrade
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH CRAM-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Changes to jni/curl/tests/data/test936.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
smtp://%HOSTIP:%SMTPPORT/936 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 936
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>







|










|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
# we try to use the LD_PRELOAD hack, if not a debug build
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
 </setenv>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
<precheck>
chkhostname curlhost
</precheck>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
Changes to jni/curl/tests/data/test937.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 <name>
SMTP DIGEST-MD5 authentication with SASL downgrade
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/937 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 937
AUTH DIGEST-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA







|







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 <name>
SMTP DIGEST-MD5 authentication with SASL downgrade
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH DIGEST-MD5
*
AUTH PLAIN
AHVzZXIAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Changes to jni/curl/tests/data/test938.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<client>
<server>
smtp
</server>
 <name>
SMTP multiple connection authentication
 </name>
<file name="log/upload938">
mail body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/938001 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user.one:secret -T log/upload938 -: smtp://%HOSTIP:%SMTPPORT/938002 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user.two:secret -T log/upload938
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 938001
AUTH PLAIN
dXNlci5vbmUAdXNlci5vbmUAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
EHLO 938002
AUTH PLAIN
dXNlci50d28AdXNlci50d28Ac2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|



|







|






|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<client>
<server>
smtp
</server>
 <name>
SMTP multiple connection authentication
 </name>
<file name="log/upload%TESTNUMBER">
mail body
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER001 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user.one:secret -T log/upload%TESTNUMBER -: smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER002 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user.two:secret -T log/upload%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER001
AUTH PLAIN
dXNlci5vbmUAdXNlci5vbmUAc2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
EHLO %TESTNUMBER002
AUTH PLAIN
dXNlci50d28AdXNlci50d28Ac2VjcmV0
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test939.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 <name>
RFC821-only SMTP with username and password
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/939 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 939
HELO 939
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
mail body







|







|
|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 <name>
RFC821-only SMTP with username and password
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
HELO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
mail body
Changes to jni/curl/tests/data/test94.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
SSL
proxy
</features>
 <name>
HTTPS GET with failed proxy auth (CONNECT 1.0)
 </name>
 <command>
https://test.anything.really.com:94 --proxy1.0 %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
CONNECT test.anything.really.com:94 HTTP/1.0
Host: test.anything.really.com:94
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>







|










|
|






31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
SSL
proxy
</features>
 <name>
HTTPS GET with failed proxy auth (CONNECT 1.0)
 </name>
 <command>
https://test.anything.really.com:%TESTNUMBER --proxy1.0 %HOSTIP:%HTTPPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<errorcode>
56
</errorcode>
<protocol>
CONNECT test.anything.really.com:%TESTNUMBER HTTP/1.0
Host: test.anything.really.com:%TESTNUMBER
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test940.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
SMTP with username and password but no AUTH capability
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/940 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 940
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
mail body







|







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
SMTP with username and password but no AUTH capability
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
mail body
Changes to jni/curl/tests/data/test941.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<client>
<server>
smtp
</server>
 <name>
SMTP with --crlf
 </name>
<file name="log/upload941">
From: different
To: another

email
headers and body
with unix newlines
meant to be
converted
with
the
--crlf option
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/941 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/upload941 --crlf
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 941
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|













|







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<client>
<server>
smtp
</server>
 <name>
SMTP with --crlf
 </name>
<file name="log/upload%TESTNUMBER">
From: different
To: another

email
headers and body
with unix newlines
meant to be
converted
with
the
--crlf option
</file>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/upload%TESTNUMBER --crlf
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test942.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/942' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 942
AUTH EXTERNAL
dXNlcg==
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/%TESTNUMBER' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH EXTERNAL
dXNlcg==
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test943.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication without credentials
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/943' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 943
AUTH EXTERNAL
=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication without credentials
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/%TESTNUMBER' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH EXTERNAL
=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test944.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/944' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 944
AUTH EXTERNAL dXNlcg==
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/%TESTNUMBER' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH EXTERNAL dXNlcg==
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Changes to jni/curl/tests/data/test945.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication with initial response without credentials
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/945' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 945
AUTH EXTERNAL =
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP external authentication with initial response without credentials
 </name>
<stdin>
mail body
</stdin>
 <command>
'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/%TESTNUMBER' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH EXTERNAL =
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Changes to jni/curl/tests/data/test946.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/946 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 946
AUTH OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) authentication
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test947.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/947 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 947
AUTH OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>







|







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) authentication with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
Changes to jni/curl/tests/data/test948.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) failure as continuation
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/948 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO 948
AUTH OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
AQ==
</protocol>
</verify>
</testcase>







|














|






30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) failure as continuation
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO %TESTNUMBER
AUTH OAUTHBEARER
%b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
AQ==
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test949.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) failure as continuation with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/949 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO 949
AUTH OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
AQ==
</protocol>
</verify>
</testcase>







|














|





30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 <name>
SMTP OAuth 2.0 (OAUTHBEARER) failure as continuation with initial response
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO %TESTNUMBER
AUTH OAUTHBEARER %b64[n,a=user,%01host=127.0.0.1%01port=%SMTPPORT%01auth=Bearer mF_9.B5f-4.1JqM%01%01]b64%
AQ==
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test95.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP over proxytunnel using POST
 </name>
 <command>
http://test.95:%HTTPPORT/we/want/that/page/95 -p -x %HOSTIP:%PROXYPORT -d "datatopost=ohthatsfunyesyes"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.95:%HTTPPORT HTTP/1.1
Host: test.95:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol nonewline="yes">
POST /we/want/that/page/95 HTTP/1.1
Host: test.95:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

datatopost=ohthatsfunyesyes
</protocol>
</verify>
</testcase>







|















|




















|










|
|





|
|









9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</data>
<connect>
HTTP/1.1 200 Mighty fine indeed

</connect>
<datacheck>
HTTP/1.1 200 Mighty fine indeed

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9

contents
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
http-proxy
</server>
 <name>
HTTP over proxytunnel using POST
 </name>
 <command>
http://test.%TESTNUMBER:%HTTPPORT/we/want/that/page/%TESTNUMBER -p -x %HOSTIP:%PROXYPORT -d "datatopost=ohthatsfunyesyes"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT test.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive

</proxy>
<protocol nonewline="yes">
POST /we/want/that/page/%TESTNUMBER HTTP/1.1
Host: test.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

datatopost=ohthatsfunyesyes
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test950.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</server>
 <name>
SMTP VRFY with custom request
 </name>

# the custom request just does it lowercase to remain the same command
<command>
smtp://%HOSTIP:%SMTPPORT/950 --mail-rcpt recipient --request "vrfy"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 950
vrfy recipient
QUIT
</protocol>
</verify>
</testcase>







|







|





23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</server>
 <name>
SMTP VRFY with custom request
 </name>

# the custom request just does it lowercase to remain the same command
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient --request "vrfy"
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
vrfy recipient
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test951.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
SMTP data with dot as first character
 </name>
<stdin>
.This first line starts with a dot
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/951 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 951
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
..This first line starts with a dot







|







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
SMTP data with dot as first character
 </name>
<stdin>
.This first line starts with a dot
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
..This first line starts with a dot
Changes to jni/curl/tests/data/test952.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
SMTP data with single dot-only line
 </name>
<stdin>
.
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/952 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 952
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
..







|







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
SMTP data with single dot-only line
 </name>
<stdin>
.
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
..
Changes to jni/curl/tests/data/test953.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP plain authentication with alternative authorization identity
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/953 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 953
AUTH PLAIN
dXJzZWwAa3VydAB4aXBqM3BsbXE=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>







|







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 <name>
SMTP plain authentication with alternative authorization identity
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
AUTH PLAIN
dXJzZWwAa3VydAB4aXBqM3BsbXE=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
Changes to jni/curl/tests/data/test954.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<testcase>
<info>
<keywords>
SMTP
SASL
SASL AUTH PLAIN
RFC4616
RFC4954
</keywords>
</info>

#
# Server-side
<reply>
<servercmd>







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<testcase>
<info>
<keywords>
SMTP
SASL
SASL AUTH PLAIN
RFC4616
RFC4%TESTNUMBER
</keywords>
</info>

#
# Server-side
<reply>
<servercmd>
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 <name>
SMTP plain authentication with alternative authorization identity (Not authorized)
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/954 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO 954
AUTH PLAIN
dXJzZWwAa3VydAB4aXBqM3BsbXE=
</protocol>
</verify>
</testcase>







|














|





28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 <name>
SMTP plain authentication with alternative authorization identity (Not authorized)
 </name>
<stdin>
mail body
</stdin>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 67 - CURLE_LOGIN_DENIED
<errorcode>
67
</errorcode>
#
# The multi interface considers a broken "CONNECT" as a prematurely broken
# transfer and such a connection will not get a "QUIT"
<protocol>
EHLO %TESTNUMBER
AUTH PLAIN
dXJzZWwAa3VydAB4aXBqM3BsbXE=
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test955.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/955 --mail-rcpt recipient@example.com --mail-from Avsändaren@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 955
MAIL FROM:<Avsändaren@example.com>
QUIT
</protocol>
</verify>
</testcase>







|











|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from Avsändaren@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<Avsändaren@example.com>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test956.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/956 --mail-rcpt Stödmottagaren@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 956
MAIL FROM:<sender@example.com>
RCPT TO:<Stödmottagaren@example.com>
QUIT
</protocol>
</verify>
</testcase>







|











|






32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Stödmottagaren@example.com --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<Stödmottagaren@example.com>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test957.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP VRFY without SMTPUTF8 support - UTF-8 based recipient (local part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/957 --mail-rcpt Användaren
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO 957
VRFY Användaren
QUIT
</protocol>
</verify>
</testcase>







|











|





27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP VRFY without SMTPUTF8 support - UTF-8 based recipient (local part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO %TESTNUMBER
VRFY Användaren
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test958.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY without SMTPUTF8 support - UTF-8 based recipient (local part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/958 --mail-rcpt Användaren@example.com
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO 958
VRFY Användaren@example.com
QUIT
</protocol>
</verify>
</testcase>







|











|





27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY without SMTPUTF8 support - UTF-8 based recipient (local part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren@example.com
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO %TESTNUMBER
VRFY Användaren@example.com
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test959.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/959 --mail-rcpt recipient@example.com --mail-from sender@åäö.se -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 959
MAIL FROM:<sender@åäö.se>
QUIT
</protocol>
</verify>
</testcase>







|











|





36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@åäö.se -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@åäö.se>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test960.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/960 --mail-rcpt recipient@åäö.se --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO 960
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@åäö.se>
QUIT
</protocol>
</verify>
</testcase>







|











|






33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@åäö.se --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 55 - CURLE_SEND_ERROR
<errorcode>
55
</errorcode>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@åäö.se>
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test961.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY without SMTPUTF8 support - UTF-8 based recipient (host part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/961 --mail-rcpt user@åäö.se
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO 961
VRFY user@åäö.se
QUIT
</protocol>
</verify>
</testcase>







|











|





28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY without SMTPUTF8 support - UTF-8 based recipient (host part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt user@åäö.se
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 56 - CURLE_RECV_ERROR
<errorcode>
56
</errorcode>
<protocol>
EHLO %TESTNUMBER
VRFY user@åäö.se
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test962.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/962 --mail-rcpt recipient@example.com --mail-from sender@åäö.se -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 962
MAIL FROM:<sender@xn--4cab6c.se>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@åäö.se -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@xn--4cab6c.se>
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test963.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/963 --mail-rcpt recipient@åäö.se --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 963
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@xn--4cab6c.se>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@åäö.se --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@xn--4cab6c.se>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test964.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY without SMTPUTF8 support (IDN Enabled) - UTF-8 based recipient (host part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/964 --mail-rcpt user@åäö.se
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 964
VRFY user@xn--4cab6c.se
QUIT
</protocol>
</verify>
</testcase>







|







|





29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY without SMTPUTF8 support (IDN Enabled) - UTF-8 based recipient (host part only)
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt user@åäö.se
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
VRFY user@xn--4cab6c.se
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test965.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/965 --mail-rcpt recipient@example.com --mail-from Avsändaren@åäö.se -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 965
MAIL FROM:<Avsändaren@xn--4cab6c.se> SMTPUTF8
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from Avsändaren@åäö.se -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<Avsändaren@xn--4cab6c.se> SMTPUTF8
RCPT TO:<recipient@example.com>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test966.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/966 --mail-rcpt Stödmottagaren@åäö.se --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 966
MAIL FROM:<sender@example.com> SMTPUTF8
RCPT TO:<Stödmottagaren@xn--4cab6c.se>
DATA
QUIT
</protocol>
<upload>
From: different







|







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<stdin>
From: different
To: another

body
</stdin>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Stödmottagaren@åäö.se --mail-from sender@example.com -T -
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
MAIL FROM:<sender@example.com> SMTPUTF8
RCPT TO:<Stödmottagaren@xn--4cab6c.se>
DATA
QUIT
</protocol>
<upload>
From: different
Changes to jni/curl/tests/data/test967.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY with SMTPUTF8 support
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/967 --mail-rcpt Användaren@åäö.se
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 967
VRFY Användaren@xn--4cab6c.se SMTPUTF8
QUIT
</protocol>
</verify>
</testcase>







|







|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP external VRFY with SMTPUTF8 support
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren@åäö.se
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
VRFY Användaren@xn--4cab6c.se SMTPUTF8
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test968.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP VRFY with SMTPUTF8 support
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/968 --mail-rcpt Användaren
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 968
VRFY Användaren SMTPUTF8
QUIT
</protocol>
</verify>
</testcase>







|







|





32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
SMTP VRFY with SMTPUTF8 support
 </name>
<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
VRFY Användaren SMTPUTF8
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test969.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
idn
!win32
</features>
 <name>
SMTP mailing list EXPN (CUSTOMREQUEST) with SMTPUTF8 support
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/969 --mail-rcpt Friends -X EXPN
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO 969
EXPN Friends SMTPUTF8
QUIT
</protocol>
</verify>
</testcase>







|







|





31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
idn
!win32
</features>
 <name>
SMTP mailing list EXPN (CUSTOMREQUEST) with SMTPUTF8 support
 </name>
 <command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Friends -X EXPN
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
EHLO %TESTNUMBER
EXPN Friends SMTPUTF8
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test97.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
HTTP POST with custom content-type
 </name>
 <command>
 -d "hejsanallabarn" -H "Content-Type: silly/type" http://%HOSTIP:%HTTPPORT/97
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /97 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Type: silly/type
Content-Length: 14

hejsanallabarn







|







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<server>
http
</server>
 <name>
HTTP POST with custom content-type
 </name>
 <command>
 -d "hejsanallabarn" -H "Content-Type: silly/type" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Type: silly/type
Content-Length: 14

hejsanallabarn
Changes to jni/curl/tests/data/test970.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 445
Connection: close
Content-Type: text/html













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 445
Connection: close
Content-Type: text/html
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
CURL_DEBUG_SIZE=4019
CURL_VERSION=curl-unit-test-fake-version
</setenv>
<name>
HTTP GET with JSON output
</name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/970 --write-out '%{json}' -o log/out970
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /970 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout nonewline="yes">
{"content_type":"text/html","filename_effective":"log/out970","http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"127.0.0.1","local_port":13,"method":"GET","num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"HTTP","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_pretransfer":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"url_effective":"http://%HOSTIP:%HTTPPORT/970","curl_version":"curl-unit-test-fake-version"}
</stdout>
</verify>
</testcase>







|







|






|



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
CURL_DEBUG_SIZE=4019
CURL_VERSION=curl-unit-test-fake-version
</setenv>
<name>
HTTP GET with JSON output
</name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --write-out '%{json}' -o log/out%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<stdout nonewline="yes">
{"content_type":"text/html","errormsg":null,"exitcode":0,"filename_effective":"log/out%TESTNUMBER","ftp_entry_path":null,"http_code":200,"http_connect":000,"http_version":"1.1","local_ip":"127.0.0.1","local_port":13,"method":"GET","num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"HTTP","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_pretransfer":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urlnum":0,"curl_version":"curl-unit-test-fake-version"}
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test98.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP PUT from stdin with set size, disabling chunked transfer-encoding
 </name>
 <command>
 -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://%HOSTIP:%HTTPPORT/98
</command>
<stdin>
data on stdin
</stdin>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /98 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 14
Expect: 100-continue

data on stdin







|










|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<server>
http
</server>
 <name>
HTTP PUT from stdin with set size, disabling chunked transfer-encoding
 </name>
 <command>
 -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
<stdin>
data on stdin
</stdin>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 14
Expect: 100-continue

data on stdin
Changes to jni/curl/tests/data/test99.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 404 Nah
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
Content-Length: 13
Funny-head: yesyes

0123456789123
</data>

<datacheck>
HTTP/1.1 404 Nah
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
Content-Length: 13
Funny-head: yesyes

</datacheck>
</reply>

#
# Client-side
<client>
<features>
large_file
</features>
<server>
http
</server>
 <name>
HTTP GET with large-file resume point and failed resume
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/99 -C 9999999999
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 33 is CURLE_RANGE_ERROR
<errorcode>
33
</errorcode>
<protocol>
GET /99 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=9999999999-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>







|









|




















|











|








9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 404 Nah
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close
Content-Length: 13
Funny-head: yesyes

0123456789123
</data>

<datacheck>
HTTP/1.1 404 Nah
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close
Content-Length: 13
Funny-head: yesyes

</datacheck>
</reply>

#
# Client-side
<client>
<features>
large_file
</features>
<server>
http
</server>
 <name>
HTTP GET with large-file resume point and failed resume
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C 9999999999
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 33 is CURLE_RANGE_ERROR
<errorcode>
33
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Range: bytes=9999999999-
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/disable-scan.pl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2010 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
    }
    close F;
}

sub scan_dir {
    my ($dir)=@_;
    opendir(my $dh, $dir) || die "Can't opendir $dir: $!";
    my @cfiles = grep { /\.c\z/ && -f "$dir/$_" } readdir($dh);
    closedir $dh;
    for my $f (sort @cfiles) {
        scan_file("$dir/$f");
    }
}

sub scan_sources {







|







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
    }
    close F;
}

sub scan_dir {
    my ($dir)=@_;
    opendir(my $dh, $dir) || die "Can't opendir $dir: $!";
    my @cfiles = grep { /\.[ch]\z/ && -f "$dir/$_" } readdir($dh);
    closedir $dh;
    for my $f (sort @cfiles) {
        scan_file("$dir/$f");
    }
}

sub scan_sources {
Changes to jni/curl/tests/ftpserver.pl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
    if($ftplistparserstate) {
      @ftpdir = ftp_contentlist($ftptargetdir);
    }

    logmsg "pass LIST data on data connection\n";

    if($cwd_testno) {
        loadtest("$logdir/test$cwd_testno") ||
            loadtest("$srcdir/data/test$cwd_testno");

        my @data = getpart("reply", "data");
        for(@data) {
            my $send = $_;
            # convert all \n to \r\n for ASCII transfer
            $send =~ s/\r\n/\n/g;
            $send =~ s/\n/\r\n/g;







|
<







2088
2089
2090
2091
2092
2093
2094
2095

2096
2097
2098
2099
2100
2101
2102
    if($ftplistparserstate) {
      @ftpdir = ftp_contentlist($ftptargetdir);
    }

    logmsg "pass LIST data on data connection\n";

    if($cwd_testno) {
        loadtest("$logdir/test$cwd_testno");


        my @data = getpart("reply", "data");
        for(@data) {
            my $send = $_;
            # convert all \n to \r\n for ASCII transfer
            $send =~ s/\r\n/\n/g;
            $send =~ s/\n/\r\n/g;
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
    my $testno = $_[0];
    my $testpart = "";
    if ($testno > 10000) {
        $testpart = $testno % 10000;
        $testno = int($testno / 10000);
    }

    loadtest("$logdir/test$testno") ||
        loadtest("$srcdir/data/test$testno");

    my @data = getpart("reply", "mdtm");

    my $reply = $data[0];
    chomp $reply if($reply);

    if($reply && ($reply =~ /^[+-]?\d+$/) && ($reply < 0)) {







|
<







2151
2152
2153
2154
2155
2156
2157
2158

2159
2160
2161
2162
2163
2164
2165
    my $testno = $_[0];
    my $testpart = "";
    if ($testno > 10000) {
        $testpart = $testno % 10000;
        $testno = int($testno / 10000);
    }

    loadtest("$logdir/test$testno");


    my @data = getpart("reply", "mdtm");

    my $reply = $data[0];
    chomp $reply if($reply);

    if($reply && ($reply =~ /^[+-]?\d+$/) && ($reply < 0)) {
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222

    my $testpart = "";
    if($testno > 10000) {
        $testpart = $testno % 10000;
        $testno = int($testno / 10000);
    }

    loadtest("$logdir/test$testno") ||
        loadtest("$srcdir/data/test$testno");

    my @data = getpart("reply", "size");

    my $size = $data[0];

    if($size) {
        if($size > -1) {
            sendcontrol "213 $size\r\n";







|
<
<







2204
2205
2206
2207
2208
2209
2210
2211


2212
2213
2214
2215
2216
2217
2218

    my $testpart = "";
    if($testno > 10000) {
        $testpart = $testno % 10000;
        $testno = int($testno / 10000);
    }

    loadtest("$logdir/test$testno");


    my @data = getpart("reply", "size");

    my $size = $data[0];

    if($size) {
        if($size > -1) {
            sendcontrol "213 $size\r\n";
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
    $testno =~ s/^([^0-9]*)//;
    my $testpart = "";
    if ($testno > 10000) {
        $testpart = $testno % 10000;
        $testno = int($testno / 10000);
    }

    loadtest("$logdir/test$testno") ||
        loadtest("$srcdir/data/test$testno");

    my @data = getpart("reply", "data$testpart");

    my $size=0;
    for(@data) {
        $size += length($_);
    }







|
<







2292
2293
2294
2295
2296
2297
2298
2299

2300
2301
2302
2303
2304
2305
2306
    $testno =~ s/^([^0-9]*)//;
    my $testpart = "";
    if ($testno > 10000) {
        $testpart = $testno % 10000;
        $testno = int($testno / 10000);
    }

    loadtest("$logdir/test$testno");


    my @data = getpart("reply", "data$testpart");

    my $size=0;
    for(@data) {
        $size += length($_);
    }
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
    set_advisor_read_lock($SERVERLOGS_LOCK);
    $serverlogslocked = 1;

    # flush data:
    $| = 1;

    &customize(); # read test control instructions
    loadtest("$logdir/test$testno") ||
        loadtest("$srcdir/data/test$testno");

    my $welcome = $commandreply{"welcome"};
    if(!$welcome) {
        $welcome = $displaytext{"welcome"};
    }
    else {
        # clear it after use







|
<







3081
3082
3083
3084
3085
3086
3087
3088

3089
3090
3091
3092
3093
3094
3095
    set_advisor_read_lock($SERVERLOGS_LOCK);
    $serverlogslocked = 1;

    # flush data:
    $| = 1;

    &customize(); # read test control instructions
    loadtest("$logdir/test$testno");


    my $welcome = $commandreply{"welcome"};
    if(!$welcome) {
        $welcome = $displaytext{"welcome"};
    }
    else {
        # clear it after use
Changes to jni/curl/tests/libtest/Makefile.in.
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151

152
153
154
155
156
157
158
	lib1533$(EXEEXT) lib1534$(EXEEXT) lib1535$(EXEEXT) \
	lib1536$(EXEEXT) lib1537$(EXEEXT) lib1538$(EXEEXT) \
	lib1539$(EXEEXT) lib1540$(EXEEXT) lib1550$(EXEEXT) \
	lib1551$(EXEEXT) lib1552$(EXEEXT) lib1553$(EXEEXT) \
	lib1554$(EXEEXT) lib1555$(EXEEXT) lib1556$(EXEEXT) \
	lib1557$(EXEEXT) lib1558$(EXEEXT) lib1559$(EXEEXT) \
	lib1560$(EXEEXT) lib1564$(EXEEXT) lib1565$(EXEEXT) \
	lib1567$(EXEEXT) lib1568$(EXEEXT) lib1591$(EXEEXT) \
	lib1592$(EXEEXT) lib1593$(EXEEXT) lib1594$(EXEEXT) \
	lib1596$(EXEEXT) lib1905$(EXEEXT) lib1906$(EXEEXT) \
	lib1907$(EXEEXT) lib1908$(EXEEXT) lib1910$(EXEEXT) \
	lib1911$(EXEEXT) lib1912$(EXEEXT) lib1913$(EXEEXT) \
	lib1915$(EXEEXT) lib1916$(EXEEXT) lib1917$(EXEEXT) \
	lib1918$(EXEEXT) lib1933$(EXEEXT) lib1934$(EXEEXT) \
	lib1935$(EXEEXT) lib1936$(EXEEXT) lib3010$(EXEEXT)

@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_3 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_4 = -mimpure-text
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_6 = $(CFLAG_CURL_SYMBOL_HIDING)








|
|
|
|
|
|
|
|
>







137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
	lib1533$(EXEEXT) lib1534$(EXEEXT) lib1535$(EXEEXT) \
	lib1536$(EXEEXT) lib1537$(EXEEXT) lib1538$(EXEEXT) \
	lib1539$(EXEEXT) lib1540$(EXEEXT) lib1550$(EXEEXT) \
	lib1551$(EXEEXT) lib1552$(EXEEXT) lib1553$(EXEEXT) \
	lib1554$(EXEEXT) lib1555$(EXEEXT) lib1556$(EXEEXT) \
	lib1557$(EXEEXT) lib1558$(EXEEXT) lib1559$(EXEEXT) \
	lib1560$(EXEEXT) lib1564$(EXEEXT) lib1565$(EXEEXT) \
	lib1567$(EXEEXT) lib1568$(EXEEXT) lib1569$(EXEEXT) \
	lib1591$(EXEEXT) lib1592$(EXEEXT) lib1593$(EXEEXT) \
	lib1594$(EXEEXT) lib1596$(EXEEXT) lib1905$(EXEEXT) \
	lib1906$(EXEEXT) lib1907$(EXEEXT) lib1908$(EXEEXT) \
	lib1910$(EXEEXT) lib1911$(EXEEXT) lib1912$(EXEEXT) \
	lib1913$(EXEEXT) lib1915$(EXEEXT) lib1916$(EXEEXT) \
	lib1917$(EXEEXT) lib1918$(EXEEXT) lib1933$(EXEEXT) \
	lib1934$(EXEEXT) lib1935$(EXEEXT) lib1936$(EXEEXT) \
	lib3010$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_3 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_4 = -mimpure-text
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_6 = $(CFLAG_CURL_SYMBOL_HIDING)

569
570
571
572
573
574
575
576




577

578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
lib1567_LDADD = $(LDADD)
lib1567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_133 = lib1568-first.$(OBJEXT)
am_lib1568_OBJECTS = lib1568-lib1568.$(OBJEXT) $(am__objects_133)
lib1568_OBJECTS = $(am_lib1568_OBJECTS)
lib1568_LDADD = $(LDADD)
lib1568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_134 = lib1591-first.$(OBJEXT)




am__objects_135 = lib1591-testutil.$(OBJEXT)

am__objects_136 = ../../lib/lib1591-warnless.$(OBJEXT)
am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_134) \
	$(am__objects_135) $(am__objects_136)
lib1591_OBJECTS = $(am_lib1591_OBJECTS)
lib1591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_137 = lib1592-first.$(OBJEXT)
am__objects_138 = lib1592-testutil.$(OBJEXT)
am__objects_139 = ../../lib/lib1592-warnless.$(OBJEXT)
am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_137) \
	$(am__objects_138) $(am__objects_139)
lib1592_OBJECTS = $(am_lib1592_OBJECTS)
lib1592_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_123) \
	$(am__objects_124) $(am__objects_125)
lib1593_OBJECTS = $(am_lib1593_OBJECTS)
lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_123) \
	$(am__objects_124) $(am__objects_125)
lib1594_OBJECTS = $(am_lib1594_OBJECTS)
lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_140 = lib1596-first.$(OBJEXT)
am__objects_141 = lib1596-testutil.$(OBJEXT)
am__objects_142 = ../../lib/lib1596-warnless.$(OBJEXT)
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_140) \
	$(am__objects_141) $(am__objects_142)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_143 = lib1905-first.$(OBJEXT)
am__objects_144 = lib1905-testutil.$(OBJEXT)
am__objects_145 = ../../lib/lib1905-warnless.$(OBJEXT)
am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_143) \
	$(am__objects_144) $(am__objects_145)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_146 = lib1906-first.$(OBJEXT)
am__objects_147 = lib1906-testutil.$(OBJEXT)
am__objects_148 = ../../lib/lib1906-warnless.$(OBJEXT)
am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_146) \
	$(am__objects_147) $(am__objects_148)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_149 = lib1907-first.$(OBJEXT)
am__objects_150 = lib1907-testutil.$(OBJEXT)
am__objects_151 = ../../lib/lib1907-warnless.$(OBJEXT)
am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_149) \
	$(am__objects_150) $(am__objects_151)
lib1907_OBJECTS = $(am_lib1907_OBJECTS)
lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_152 = lib1908-first.$(OBJEXT)
am__objects_153 = lib1908-testutil.$(OBJEXT)
am__objects_154 = ../../lib/lib1908-warnless.$(OBJEXT)
am_lib1908_OBJECTS = lib1908-lib1908.$(OBJEXT) $(am__objects_152) \
	$(am__objects_153) $(am__objects_154)
lib1908_OBJECTS = $(am_lib1908_OBJECTS)
lib1908_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_155 = lib1910-first.$(OBJEXT)
am__objects_156 = lib1910-testutil.$(OBJEXT)
am__objects_157 = ../../lib/lib1910-warnless.$(OBJEXT)
am_lib1910_OBJECTS = lib1910-lib1910.$(OBJEXT) $(am__objects_155) \
	$(am__objects_156) $(am__objects_157)
lib1910_OBJECTS = $(am_lib1910_OBJECTS)
lib1910_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_158 = lib1911-first.$(OBJEXT)
am__objects_159 = lib1911-testutil.$(OBJEXT)
am__objects_160 = ../../lib/lib1911-warnless.$(OBJEXT)
am_lib1911_OBJECTS = lib1911-lib1911.$(OBJEXT) $(am__objects_158) \
	$(am__objects_159) $(am__objects_160)
lib1911_OBJECTS = $(am_lib1911_OBJECTS)
lib1911_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_161 = lib1912-first.$(OBJEXT)
am__objects_162 = lib1912-testutil.$(OBJEXT)
am__objects_163 = ../../lib/lib1912-warnless.$(OBJEXT)
am_lib1912_OBJECTS = lib1912-lib1912.$(OBJEXT) $(am__objects_161) \
	$(am__objects_162) $(am__objects_163)
lib1912_OBJECTS = $(am_lib1912_OBJECTS)
lib1912_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_164 = lib1913-first.$(OBJEXT)
am__objects_165 = lib1913-testutil.$(OBJEXT)
am__objects_166 = ../../lib/lib1913-warnless.$(OBJEXT)
am_lib1913_OBJECTS = lib1913-lib1913.$(OBJEXT) $(am__objects_164) \
	$(am__objects_165) $(am__objects_166)
lib1913_OBJECTS = $(am_lib1913_OBJECTS)
lib1913_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_167 = lib1915-first.$(OBJEXT)
am__objects_168 = lib1915-testutil.$(OBJEXT)
am__objects_169 = ../../lib/lib1915-warnless.$(OBJEXT)
am_lib1915_OBJECTS = lib1915-lib1915.$(OBJEXT) $(am__objects_167) \
	$(am__objects_168) $(am__objects_169)
lib1915_OBJECTS = $(am_lib1915_OBJECTS)
lib1915_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_170 = lib1916-first.$(OBJEXT)
am__objects_171 = ../../lib/lib1916-warnless.$(OBJEXT)
am_lib1916_OBJECTS = lib1916-lib1916.$(OBJEXT) $(am__objects_170) \
	$(am__objects_171)
lib1916_OBJECTS = $(am_lib1916_OBJECTS)
lib1916_LDADD = $(LDADD)
lib1916_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_172 = lib1917-first.$(OBJEXT)
am__objects_173 = ../../lib/lib1917-warnless.$(OBJEXT)
am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_172) \
	$(am__objects_173)
lib1917_OBJECTS = $(am_lib1917_OBJECTS)
lib1917_LDADD = $(LDADD)
lib1917_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_174 = lib1918-first.$(OBJEXT)
am__objects_175 = ../../lib/lib1918-warnless.$(OBJEXT)
am_lib1918_OBJECTS = lib1918-lib1918.$(OBJEXT) $(am__objects_174) \
	$(am__objects_175)
lib1918_OBJECTS = $(am_lib1918_OBJECTS)
lib1918_LDADD = $(LDADD)
lib1918_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_176 = lib1933-first.$(OBJEXT)
am__objects_177 = lib1933-testutil.$(OBJEXT)
am__objects_178 = ../../lib/lib1933-warnless.$(OBJEXT)
am_lib1933_OBJECTS = lib1933-lib1933.$(OBJEXT) $(am__objects_176) \
	$(am__objects_177) $(am__objects_178)
lib1933_OBJECTS = $(am_lib1933_OBJECTS)
lib1933_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_179 = lib1934-first.$(OBJEXT)
am__objects_180 = lib1934-testutil.$(OBJEXT)
am__objects_181 = ../../lib/lib1934-warnless.$(OBJEXT)
am_lib1934_OBJECTS = lib1934-lib1934.$(OBJEXT) $(am__objects_179) \
	$(am__objects_180) $(am__objects_181)
lib1934_OBJECTS = $(am_lib1934_OBJECTS)
lib1934_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_182 = lib1935-first.$(OBJEXT)
am__objects_183 = lib1935-testutil.$(OBJEXT)
am__objects_184 = ../../lib/lib1935-warnless.$(OBJEXT)
am_lib1935_OBJECTS = lib1935-lib1935.$(OBJEXT) $(am__objects_182) \
	$(am__objects_183) $(am__objects_184)
lib1935_OBJECTS = $(am_lib1935_OBJECTS)
lib1935_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_185 = lib1936-first.$(OBJEXT)
am__objects_186 = lib1936-testutil.$(OBJEXT)
am__objects_187 = ../../lib/lib1936-warnless.$(OBJEXT)
am_lib1936_OBJECTS = lib1936-lib1936.$(OBJEXT) $(am__objects_185) \
	$(am__objects_186) $(am__objects_187)
lib1936_OBJECTS = $(am_lib1936_OBJECTS)
lib1936_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_188 = lib3010-first.$(OBJEXT)
am__objects_189 = lib3010-testutil.$(OBJEXT)
am__objects_190 = ../../lib/lib3010-warnless.$(OBJEXT)
am_lib3010_OBJECTS = lib3010-lib3010.$(OBJEXT) $(am__objects_188) \
	$(am__objects_189) $(am__objects_190)
lib3010_OBJECTS = $(am_lib3010_OBJECTS)
lib3010_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_191 = lib500-first.$(OBJEXT)
am__objects_192 = lib500-testutil.$(OBJEXT)
am__objects_193 = lib500-testtrace.$(OBJEXT)
am__objects_194 = ../../lib/lib500-curl_multibyte.$(OBJEXT)
am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_191) \
	$(am__objects_192) $(am__objects_193) $(am__objects_194)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_195 = lib501-first.$(OBJEXT)
am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_195)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_196 = lib502-first.$(OBJEXT)
am__objects_197 = lib502-testutil.$(OBJEXT)
am__objects_198 = ../../lib/lib502-warnless.$(OBJEXT)
am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_196) \
	$(am__objects_197) $(am__objects_198)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_199 = lib503-first.$(OBJEXT)
am__objects_200 = lib503-testutil.$(OBJEXT)
am__objects_201 = ../../lib/lib503-warnless.$(OBJEXT)
am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_199) \
	$(am__objects_200) $(am__objects_201)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_202 = lib504-first.$(OBJEXT)
am__objects_203 = lib504-testutil.$(OBJEXT)
am__objects_204 = ../../lib/lib504-warnless.$(OBJEXT)
am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_202) \
	$(am__objects_203) $(am__objects_204)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_205 = lib505-first.$(OBJEXT)
am__objects_206 = ../../lib/lib505-curl_multibyte.$(OBJEXT)
am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_205) \
	$(am__objects_206)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_207 = lib506-first.$(OBJEXT)
am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_207)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_208 = lib507-first.$(OBJEXT)
am__objects_209 = lib507-testutil.$(OBJEXT)
am__objects_210 = ../../lib/lib507-warnless.$(OBJEXT)
am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_208) \
	$(am__objects_209) $(am__objects_210)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_211 = lib508-first.$(OBJEXT)
am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_211)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_212 = lib509-first.$(OBJEXT)
am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_212)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_213 = lib510-first.$(OBJEXT)
am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_213)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_214 = lib511-first.$(OBJEXT)
am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_214)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_215 = lib512-first.$(OBJEXT)
am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_215)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_216 = lib513-first.$(OBJEXT)
am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_216)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_217 = lib514-first.$(OBJEXT)
am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_217)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_218 = lib515-first.$(OBJEXT)
am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_218)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_219 = lib516-first.$(OBJEXT)
am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_219)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_220 = lib517-first.$(OBJEXT)
am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_220)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_221 = lib518-first.$(OBJEXT)
am__objects_222 = ../../lib/lib518-warnless.$(OBJEXT)
am__objects_223 = ../../lib/lib518-curl_multibyte.$(OBJEXT)
am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_221) \
	$(am__objects_222) $(am__objects_223)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_224 = lib519-first.$(OBJEXT)
am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_224)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_225 = lib520-first.$(OBJEXT)
am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_225)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_226 = lib521-first.$(OBJEXT)
am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_226)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_227 = lib523-first.$(OBJEXT)
am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_227)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_228 = lib524-first.$(OBJEXT)
am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_228)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_229 = lib525-first.$(OBJEXT)
am__objects_230 = lib525-testutil.$(OBJEXT)
am__objects_231 = ../../lib/lib525-warnless.$(OBJEXT)
am__objects_232 = ../../lib/lib525-curl_multibyte.$(OBJEXT)
am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_229) \
	$(am__objects_230) $(am__objects_231) $(am__objects_232)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_233 = lib526-first.$(OBJEXT)
am__objects_234 = lib526-testutil.$(OBJEXT)
am__objects_235 = ../../lib/lib526-warnless.$(OBJEXT)
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_233) \
	$(am__objects_234) $(am__objects_235)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_236 = lib527-first.$(OBJEXT)
am__objects_237 = lib527-testutil.$(OBJEXT)
am__objects_238 = ../../lib/lib527-warnless.$(OBJEXT)
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_236) \
	$(am__objects_237) $(am__objects_238)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_239 = lib529-first.$(OBJEXT)
am__objects_240 = lib529-testutil.$(OBJEXT)
am__objects_241 = ../../lib/lib529-warnless.$(OBJEXT)
am__objects_242 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_239) \
	$(am__objects_240) $(am__objects_241) $(am__objects_242)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_243 = lib532-first.$(OBJEXT)
am__objects_244 = lib532-testutil.$(OBJEXT)
am__objects_245 = ../../lib/lib532-warnless.$(OBJEXT)
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_243) \
	$(am__objects_244) $(am__objects_245)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_246 = lib533-first.$(OBJEXT)
am__objects_247 = lib533-testutil.$(OBJEXT)
am__objects_248 = ../../lib/lib533-warnless.$(OBJEXT)
am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_246) \
	$(am__objects_247) $(am__objects_248)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_249 = lib537-first.$(OBJEXT)
am__objects_250 = ../../lib/lib537-warnless.$(OBJEXT)
am__objects_251 = ../../lib/lib537-curl_multibyte.$(OBJEXT)
am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_249) \
	$(am__objects_250) $(am__objects_251)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_252 = lib539-first.$(OBJEXT)
am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_252)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_253 = lib540-first.$(OBJEXT)
am__objects_254 = lib540-testutil.$(OBJEXT)
am__objects_255 = ../../lib/lib540-warnless.$(OBJEXT)
am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_253) \
	$(am__objects_254) $(am__objects_255)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_256 = lib541-first.$(OBJEXT)
am__objects_257 = ../../lib/lib541-curl_multibyte.$(OBJEXT)
am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_256) \
	$(am__objects_257)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_258 = lib542-first.$(OBJEXT)
am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_258)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_259 = lib543-first.$(OBJEXT)
am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_259)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_260 = lib544-first.$(OBJEXT)
am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_260)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_261 = lib545-first.$(OBJEXT)
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_261)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_262 = lib547-first.$(OBJEXT)
am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_262)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_263 = lib548-first.$(OBJEXT)
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_263)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_264 = lib549-first.$(OBJEXT)
am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_264)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_265 = lib552-first.$(OBJEXT)
am__objects_266 = ../../lib/lib552-warnless.$(OBJEXT)
am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_265) \
	$(am__objects_266)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_267 = lib553-first.$(OBJEXT)
am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_267)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_268 = lib554-first.$(OBJEXT)
am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_268)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_269 = lib555-first.$(OBJEXT)
am__objects_270 = lib555-testutil.$(OBJEXT)
am__objects_271 = ../../lib/lib555-warnless.$(OBJEXT)
am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_269) \
	$(am__objects_270) $(am__objects_271)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_272 = lib556-first.$(OBJEXT)
am__objects_273 = ../../lib/lib556-warnless.$(OBJEXT)
am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_272) \
	$(am__objects_273)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_274 = lib557-first.$(OBJEXT)
am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_274)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_275 = lib558-first.$(OBJEXT)
am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_275)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_276 = lib559-first.$(OBJEXT)
am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_276)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_277 = lib560-first.$(OBJEXT)
am__objects_278 = lib560-testutil.$(OBJEXT)
am__objects_279 = ../../lib/lib560-warnless.$(OBJEXT)
am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_277) \
	$(am__objects_278) $(am__objects_279)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_280 = lib562-first.$(OBJEXT)
am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_280)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_281 = lib564-first.$(OBJEXT)
am__objects_282 = lib564-testutil.$(OBJEXT)
am__objects_283 = ../../lib/lib564-warnless.$(OBJEXT)
am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_281) \
	$(am__objects_282) $(am__objects_283)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_284 = lib565-first.$(OBJEXT)
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_284)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_285 = lib566-first.$(OBJEXT)
am__objects_286 = ../../lib/lib566-curl_multibyte.$(OBJEXT)
am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_285) \
	$(am__objects_286)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_287 = lib567-first.$(OBJEXT)
am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_287)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_288 = lib568-first.$(OBJEXT)
am__objects_289 = ../../lib/lib568-curl_multibyte.$(OBJEXT)
am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_288) \
	$(am__objects_289)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_290 = lib569-first.$(OBJEXT)
am__objects_291 = ../../lib/lib569-curl_multibyte.$(OBJEXT)
am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_290) \
	$(am__objects_291)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_292 = lib570-first.$(OBJEXT)
am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_292)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_293 = lib571-first.$(OBJEXT)
am__objects_294 = ../../lib/lib571-warnless.$(OBJEXT)
am__objects_295 = ../../lib/lib571-curl_multibyte.$(OBJEXT)
am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_293) \
	$(am__objects_294) $(am__objects_295)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_296 = lib572-first.$(OBJEXT)
am__objects_297 = ../../lib/lib572-curl_multibyte.$(OBJEXT)
am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_296) \
	$(am__objects_297)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_298 = lib573-first.$(OBJEXT)
am__objects_299 = lib573-testutil.$(OBJEXT)
am__objects_300 = ../../lib/lib573-warnless.$(OBJEXT)
am__objects_301 = lib573-testtrace.$(OBJEXT)
am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_298) \
	$(am__objects_299) $(am__objects_300) $(am__objects_301)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_302 = lib574-first.$(OBJEXT)
am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_302)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_303 = lib575-first.$(OBJEXT)
am__objects_304 = lib575-testutil.$(OBJEXT)
am__objects_305 = ../../lib/lib575-warnless.$(OBJEXT)
am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_303) \
	$(am__objects_304) $(am__objects_305)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_306 = lib576-first.$(OBJEXT)
am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_306)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_307 = lib578-first.$(OBJEXT)
am__objects_308 = ../../lib/lib578-curl_multibyte.$(OBJEXT)
am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_307) \
	$(am__objects_308)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_309 = lib579-first.$(OBJEXT)
am__objects_310 = ../../lib/lib579-curl_multibyte.$(OBJEXT)
am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_309) \
	$(am__objects_310)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_311 = lib582-first.$(OBJEXT)
am__objects_312 = lib582-testutil.$(OBJEXT)
am__objects_313 = ../../lib/lib582-warnless.$(OBJEXT)
am__objects_314 = ../../lib/lib582-curl_multibyte.$(OBJEXT)
am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_311) \
	$(am__objects_312) $(am__objects_313) $(am__objects_314)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_315 = lib583-first.$(OBJEXT)
am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_315)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_316 = lib584-first.$(OBJEXT)
am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_316)
lib584_OBJECTS = $(am_lib584_OBJECTS)
lib584_LDADD = $(LDADD)
lib584_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_317 = lib585-first.$(OBJEXT)
am__objects_318 = lib585-testutil.$(OBJEXT)
am__objects_319 = lib585-testtrace.$(OBJEXT)
am__objects_320 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_317) \
	$(am__objects_318) $(am__objects_319) $(am__objects_320)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_321 = lib586-first.$(OBJEXT)
am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_321)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_322 = lib587-first.$(OBJEXT)
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_322)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_323 = lib589-first.$(OBJEXT)
am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_323)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_324 = lib590-first.$(OBJEXT)
am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_324)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_325 = lib591-first.$(OBJEXT)
am__objects_326 = lib591-testutil.$(OBJEXT)
am__objects_327 = ../../lib/lib591-warnless.$(OBJEXT)
am__objects_328 = ../../lib/lib591-curl_multibyte.$(OBJEXT)
am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_325) \
	$(am__objects_326) $(am__objects_327) $(am__objects_328)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_329 = lib597-first.$(OBJEXT)
am__objects_330 = lib597-testutil.$(OBJEXT)
am__objects_331 = ../../lib/lib597-warnless.$(OBJEXT)
am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_329) \
	$(am__objects_330) $(am__objects_331)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_332 = lib598-first.$(OBJEXT)
am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_332)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_333 = lib599-first.$(OBJEXT)
am__objects_334 = ../../lib/lib599-curl_multibyte.$(OBJEXT)
am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_333) \
	$(am__objects_334)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_335 = lib643-first.$(OBJEXT)
am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_335)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_336 = lib644-first.$(OBJEXT)
am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_336)
lib644_OBJECTS = $(am_lib644_OBJECTS)
lib644_LDADD = $(LDADD)
lib644_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_337 = lib645-first.$(OBJEXT)
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_337)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_338 = lib650-first.$(OBJEXT)
am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_338)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_339 = lib651-first.$(OBJEXT)
am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_339)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_340 = lib652-first.$(OBJEXT)
am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_340)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_341 = lib653-first.$(OBJEXT)
am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_341)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_342 = lib654-first.$(OBJEXT)
am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_342)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_343 = lib655-first.$(OBJEXT)
am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_343)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_344 = lib658-first.$(OBJEXT)
am__objects_345 = lib658-testutil.$(OBJEXT)
am__objects_346 = ../../lib/lib658-warnless.$(OBJEXT)
am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_344) \
	$(am__objects_345) $(am__objects_346)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_347 = lib659-first.$(OBJEXT)
am__objects_348 = lib659-testutil.$(OBJEXT)
am__objects_349 = ../../lib/lib659-warnless.$(OBJEXT)
am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_347) \
	$(am__objects_348) $(am__objects_349)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_350 = lib661-first.$(OBJEXT)
am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_350)
lib661_OBJECTS = $(am_lib661_OBJECTS)
lib661_LDADD = $(LDADD)
lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_351 = lib666-first.$(OBJEXT)
am_lib666_OBJECTS = lib666-lib666.$(OBJEXT) $(am__objects_351)
lib666_OBJECTS = $(am_lib666_OBJECTS)
lib666_LDADD = $(LDADD)
lib666_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_352 = lib667-first.$(OBJEXT)
am__objects_353 = lib667-testutil.$(OBJEXT)
am__objects_354 = ../../lib/lib667-warnless.$(OBJEXT)
am_lib667_OBJECTS = lib667-lib667.$(OBJEXT) $(am__objects_352) \
	$(am__objects_353) $(am__objects_354)
lib667_OBJECTS = $(am_lib667_OBJECTS)
lib667_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_355 = lib668-first.$(OBJEXT)
am__objects_356 = lib668-testutil.$(OBJEXT)
am__objects_357 = ../../lib/lib668-warnless.$(OBJEXT)
am_lib668_OBJECTS = lib668-lib668.$(OBJEXT) $(am__objects_355) \
	$(am__objects_356) $(am__objects_357)
lib668_OBJECTS = $(am_lib668_OBJECTS)
lib668_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_358 = lib670-first.$(OBJEXT)
am__objects_359 = lib670-testutil.$(OBJEXT)
am__objects_360 = ../../lib/lib670-warnless.$(OBJEXT)
am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_358) \
	$(am__objects_359) $(am__objects_360)
lib670_OBJECTS = $(am_lib670_OBJECTS)
lib670_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_361 = lib671-first.$(OBJEXT)
am__objects_362 = lib671-testutil.$(OBJEXT)
am__objects_363 = ../../lib/lib671-warnless.$(OBJEXT)
am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_361) \
	$(am__objects_362) $(am__objects_363)
lib671_OBJECTS = $(am_lib671_OBJECTS)
lib671_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_364 = lib672-first.$(OBJEXT)
am__objects_365 = lib672-testutil.$(OBJEXT)
am__objects_366 = ../../lib/lib672-warnless.$(OBJEXT)
am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_364) \
	$(am__objects_365) $(am__objects_366)
lib672_OBJECTS = $(am_lib672_OBJECTS)
lib672_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_367 = lib673-first.$(OBJEXT)
am__objects_368 = lib673-testutil.$(OBJEXT)
am__objects_369 = ../../lib/lib673-warnless.$(OBJEXT)
am_lib673_OBJECTS = lib673-lib670.$(OBJEXT) $(am__objects_367) \
	$(am__objects_368) $(am__objects_369)
lib673_OBJECTS = $(am_lib673_OBJECTS)
lib673_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_370 = lib674-first.$(OBJEXT)
am__objects_371 = lib674-testutil.$(OBJEXT)
am__objects_372 = ../../lib/lib674-warnless.$(OBJEXT)
am_lib674_OBJECTS = lib674-lib674.$(OBJEXT) $(am__objects_370) \
	$(am__objects_371) $(am__objects_372)
lib674_OBJECTS = $(am_lib674_OBJECTS)
lib674_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_373 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
	$(am__objects_373)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_374 = libntlmconnect-first.$(OBJEXT)
am__objects_375 = libntlmconnect-testutil.$(OBJEXT)
am__objects_376 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
	$(am__objects_374) $(am__objects_375) $(am__objects_376)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)







|
>
>
>
>
|
>
|
|
|


|
|
|
|
|










|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|



|
|
|
|



|
|
|
|



|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|
|


|
|



|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|



|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|



|
|



|
|
|
|
|


|
|
|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|



|
|



|
|



|
|
|
|
|


|
|
|
|



|
|



|
|



|
|



|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|
|
|



|
|



|
|
|
|



|
|
|
|



|
|



|
|
|
|
|



|
|
|
|



|
|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|
|
|



|
|
|
|



|
|
|
|
|
|


|
|



|
|



|
|
|
|
|
|


|
|



|
|



|
|



|
|



|
|
|
|
|
|


|
|
|
|
|


|
|



|
|
|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|
|


|
|
|
|
|


|
|



|
|



|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|

|



|
|
|

|







570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
lib1567_LDADD = $(LDADD)
lib1567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_133 = lib1568-first.$(OBJEXT)
am_lib1568_OBJECTS = lib1568-lib1568.$(OBJEXT) $(am__objects_133)
lib1568_OBJECTS = $(am_lib1568_OBJECTS)
lib1568_LDADD = $(LDADD)
lib1568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_134 = lib1569-first.$(OBJEXT)
am_lib1569_OBJECTS = lib1569-lib1569.$(OBJEXT) $(am__objects_134)
lib1569_OBJECTS = $(am_lib1569_OBJECTS)
lib1569_LDADD = $(LDADD)
lib1569_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_135 = lib1591-first.$(OBJEXT)
am__objects_136 = lib1591-testutil.$(OBJEXT)
am__objects_137 = ../../lib/lib1591-warnless.$(OBJEXT)
am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_135) \
	$(am__objects_136) $(am__objects_137)
lib1591_OBJECTS = $(am_lib1591_OBJECTS)
lib1591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_138 = lib1592-first.$(OBJEXT)
am__objects_139 = lib1592-testutil.$(OBJEXT)
am__objects_140 = ../../lib/lib1592-warnless.$(OBJEXT)
am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_138) \
	$(am__objects_139) $(am__objects_140)
lib1592_OBJECTS = $(am_lib1592_OBJECTS)
lib1592_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_123) \
	$(am__objects_124) $(am__objects_125)
lib1593_OBJECTS = $(am_lib1593_OBJECTS)
lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_123) \
	$(am__objects_124) $(am__objects_125)
lib1594_OBJECTS = $(am_lib1594_OBJECTS)
lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_141 = lib1596-first.$(OBJEXT)
am__objects_142 = lib1596-testutil.$(OBJEXT)
am__objects_143 = ../../lib/lib1596-warnless.$(OBJEXT)
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_141) \
	$(am__objects_142) $(am__objects_143)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_144 = lib1905-first.$(OBJEXT)
am__objects_145 = lib1905-testutil.$(OBJEXT)
am__objects_146 = ../../lib/lib1905-warnless.$(OBJEXT)
am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_144) \
	$(am__objects_145) $(am__objects_146)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_147 = lib1906-first.$(OBJEXT)
am__objects_148 = lib1906-testutil.$(OBJEXT)
am__objects_149 = ../../lib/lib1906-warnless.$(OBJEXT)
am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_147) \
	$(am__objects_148) $(am__objects_149)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_150 = lib1907-first.$(OBJEXT)
am__objects_151 = lib1907-testutil.$(OBJEXT)
am__objects_152 = ../../lib/lib1907-warnless.$(OBJEXT)
am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_150) \
	$(am__objects_151) $(am__objects_152)
lib1907_OBJECTS = $(am_lib1907_OBJECTS)
lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_153 = lib1908-first.$(OBJEXT)
am__objects_154 = lib1908-testutil.$(OBJEXT)
am__objects_155 = ../../lib/lib1908-warnless.$(OBJEXT)
am_lib1908_OBJECTS = lib1908-lib1908.$(OBJEXT) $(am__objects_153) \
	$(am__objects_154) $(am__objects_155)
lib1908_OBJECTS = $(am_lib1908_OBJECTS)
lib1908_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_156 = lib1910-first.$(OBJEXT)
am__objects_157 = lib1910-testutil.$(OBJEXT)
am__objects_158 = ../../lib/lib1910-warnless.$(OBJEXT)
am_lib1910_OBJECTS = lib1910-lib1910.$(OBJEXT) $(am__objects_156) \
	$(am__objects_157) $(am__objects_158)
lib1910_OBJECTS = $(am_lib1910_OBJECTS)
lib1910_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_159 = lib1911-first.$(OBJEXT)
am__objects_160 = lib1911-testutil.$(OBJEXT)
am__objects_161 = ../../lib/lib1911-warnless.$(OBJEXT)
am_lib1911_OBJECTS = lib1911-lib1911.$(OBJEXT) $(am__objects_159) \
	$(am__objects_160) $(am__objects_161)
lib1911_OBJECTS = $(am_lib1911_OBJECTS)
lib1911_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_162 = lib1912-first.$(OBJEXT)
am__objects_163 = lib1912-testutil.$(OBJEXT)
am__objects_164 = ../../lib/lib1912-warnless.$(OBJEXT)
am_lib1912_OBJECTS = lib1912-lib1912.$(OBJEXT) $(am__objects_162) \
	$(am__objects_163) $(am__objects_164)
lib1912_OBJECTS = $(am_lib1912_OBJECTS)
lib1912_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_165 = lib1913-first.$(OBJEXT)
am__objects_166 = lib1913-testutil.$(OBJEXT)
am__objects_167 = ../../lib/lib1913-warnless.$(OBJEXT)
am_lib1913_OBJECTS = lib1913-lib1913.$(OBJEXT) $(am__objects_165) \
	$(am__objects_166) $(am__objects_167)
lib1913_OBJECTS = $(am_lib1913_OBJECTS)
lib1913_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_168 = lib1915-first.$(OBJEXT)
am__objects_169 = lib1915-testutil.$(OBJEXT)
am__objects_170 = ../../lib/lib1915-warnless.$(OBJEXT)
am_lib1915_OBJECTS = lib1915-lib1915.$(OBJEXT) $(am__objects_168) \
	$(am__objects_169) $(am__objects_170)
lib1915_OBJECTS = $(am_lib1915_OBJECTS)
lib1915_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_171 = lib1916-first.$(OBJEXT)
am__objects_172 = ../../lib/lib1916-warnless.$(OBJEXT)
am_lib1916_OBJECTS = lib1916-lib1916.$(OBJEXT) $(am__objects_171) \
	$(am__objects_172)
lib1916_OBJECTS = $(am_lib1916_OBJECTS)
lib1916_LDADD = $(LDADD)
lib1916_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_173 = lib1917-first.$(OBJEXT)
am__objects_174 = ../../lib/lib1917-warnless.$(OBJEXT)
am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_173) \
	$(am__objects_174)
lib1917_OBJECTS = $(am_lib1917_OBJECTS)
lib1917_LDADD = $(LDADD)
lib1917_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_175 = lib1918-first.$(OBJEXT)
am__objects_176 = ../../lib/lib1918-warnless.$(OBJEXT)
am_lib1918_OBJECTS = lib1918-lib1918.$(OBJEXT) $(am__objects_175) \
	$(am__objects_176)
lib1918_OBJECTS = $(am_lib1918_OBJECTS)
lib1918_LDADD = $(LDADD)
lib1918_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_177 = lib1933-first.$(OBJEXT)
am__objects_178 = lib1933-testutil.$(OBJEXT)
am__objects_179 = ../../lib/lib1933-warnless.$(OBJEXT)
am_lib1933_OBJECTS = lib1933-lib1933.$(OBJEXT) $(am__objects_177) \
	$(am__objects_178) $(am__objects_179)
lib1933_OBJECTS = $(am_lib1933_OBJECTS)
lib1933_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_180 = lib1934-first.$(OBJEXT)
am__objects_181 = lib1934-testutil.$(OBJEXT)
am__objects_182 = ../../lib/lib1934-warnless.$(OBJEXT)
am_lib1934_OBJECTS = lib1934-lib1934.$(OBJEXT) $(am__objects_180) \
	$(am__objects_181) $(am__objects_182)
lib1934_OBJECTS = $(am_lib1934_OBJECTS)
lib1934_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_183 = lib1935-first.$(OBJEXT)
am__objects_184 = lib1935-testutil.$(OBJEXT)
am__objects_185 = ../../lib/lib1935-warnless.$(OBJEXT)
am_lib1935_OBJECTS = lib1935-lib1935.$(OBJEXT) $(am__objects_183) \
	$(am__objects_184) $(am__objects_185)
lib1935_OBJECTS = $(am_lib1935_OBJECTS)
lib1935_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_186 = lib1936-first.$(OBJEXT)
am__objects_187 = lib1936-testutil.$(OBJEXT)
am__objects_188 = ../../lib/lib1936-warnless.$(OBJEXT)
am_lib1936_OBJECTS = lib1936-lib1936.$(OBJEXT) $(am__objects_186) \
	$(am__objects_187) $(am__objects_188)
lib1936_OBJECTS = $(am_lib1936_OBJECTS)
lib1936_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_189 = lib3010-first.$(OBJEXT)
am__objects_190 = lib3010-testutil.$(OBJEXT)
am__objects_191 = ../../lib/lib3010-warnless.$(OBJEXT)
am_lib3010_OBJECTS = lib3010-lib3010.$(OBJEXT) $(am__objects_189) \
	$(am__objects_190) $(am__objects_191)
lib3010_OBJECTS = $(am_lib3010_OBJECTS)
lib3010_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_192 = lib500-first.$(OBJEXT)
am__objects_193 = lib500-testutil.$(OBJEXT)
am__objects_194 = lib500-testtrace.$(OBJEXT)
am__objects_195 = ../../lib/lib500-curl_multibyte.$(OBJEXT)
am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_192) \
	$(am__objects_193) $(am__objects_194) $(am__objects_195)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_196 = lib501-first.$(OBJEXT)
am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_196)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_197 = lib502-first.$(OBJEXT)
am__objects_198 = lib502-testutil.$(OBJEXT)
am__objects_199 = ../../lib/lib502-warnless.$(OBJEXT)
am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_197) \
	$(am__objects_198) $(am__objects_199)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_200 = lib503-first.$(OBJEXT)
am__objects_201 = lib503-testutil.$(OBJEXT)
am__objects_202 = ../../lib/lib503-warnless.$(OBJEXT)
am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_200) \
	$(am__objects_201) $(am__objects_202)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_203 = lib504-first.$(OBJEXT)
am__objects_204 = lib504-testutil.$(OBJEXT)
am__objects_205 = ../../lib/lib504-warnless.$(OBJEXT)
am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_203) \
	$(am__objects_204) $(am__objects_205)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_206 = lib505-first.$(OBJEXT)
am__objects_207 = ../../lib/lib505-curl_multibyte.$(OBJEXT)
am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_206) \
	$(am__objects_207)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_208 = lib506-first.$(OBJEXT)
am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_208)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_209 = lib507-first.$(OBJEXT)
am__objects_210 = lib507-testutil.$(OBJEXT)
am__objects_211 = ../../lib/lib507-warnless.$(OBJEXT)
am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_209) \
	$(am__objects_210) $(am__objects_211)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_212 = lib508-first.$(OBJEXT)
am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_212)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_213 = lib509-first.$(OBJEXT)
am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_213)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_214 = lib510-first.$(OBJEXT)
am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_214)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_215 = lib511-first.$(OBJEXT)
am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_215)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_216 = lib512-first.$(OBJEXT)
am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_216)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_217 = lib513-first.$(OBJEXT)
am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_217)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_218 = lib514-first.$(OBJEXT)
am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_218)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_219 = lib515-first.$(OBJEXT)
am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_219)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_220 = lib516-first.$(OBJEXT)
am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_220)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_221 = lib517-first.$(OBJEXT)
am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_221)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_222 = lib518-first.$(OBJEXT)
am__objects_223 = ../../lib/lib518-warnless.$(OBJEXT)
am__objects_224 = ../../lib/lib518-curl_multibyte.$(OBJEXT)
am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_222) \
	$(am__objects_223) $(am__objects_224)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_225 = lib519-first.$(OBJEXT)
am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_225)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_226 = lib520-first.$(OBJEXT)
am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_226)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_227 = lib521-first.$(OBJEXT)
am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_227)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_228 = lib523-first.$(OBJEXT)
am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_228)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_229 = lib524-first.$(OBJEXT)
am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_229)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_230 = lib525-first.$(OBJEXT)
am__objects_231 = lib525-testutil.$(OBJEXT)
am__objects_232 = ../../lib/lib525-warnless.$(OBJEXT)
am__objects_233 = ../../lib/lib525-curl_multibyte.$(OBJEXT)
am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_230) \
	$(am__objects_231) $(am__objects_232) $(am__objects_233)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_234 = lib526-first.$(OBJEXT)
am__objects_235 = lib526-testutil.$(OBJEXT)
am__objects_236 = ../../lib/lib526-warnless.$(OBJEXT)
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_234) \
	$(am__objects_235) $(am__objects_236)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_237 = lib527-first.$(OBJEXT)
am__objects_238 = lib527-testutil.$(OBJEXT)
am__objects_239 = ../../lib/lib527-warnless.$(OBJEXT)
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_237) \
	$(am__objects_238) $(am__objects_239)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_240 = lib529-first.$(OBJEXT)
am__objects_241 = lib529-testutil.$(OBJEXT)
am__objects_242 = ../../lib/lib529-warnless.$(OBJEXT)
am__objects_243 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_240) \
	$(am__objects_241) $(am__objects_242) $(am__objects_243)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_244 = lib532-first.$(OBJEXT)
am__objects_245 = lib532-testutil.$(OBJEXT)
am__objects_246 = ../../lib/lib532-warnless.$(OBJEXT)
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_244) \
	$(am__objects_245) $(am__objects_246)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_247 = lib533-first.$(OBJEXT)
am__objects_248 = lib533-testutil.$(OBJEXT)
am__objects_249 = ../../lib/lib533-warnless.$(OBJEXT)
am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_247) \
	$(am__objects_248) $(am__objects_249)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_250 = lib537-first.$(OBJEXT)
am__objects_251 = ../../lib/lib537-warnless.$(OBJEXT)
am__objects_252 = ../../lib/lib537-curl_multibyte.$(OBJEXT)
am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_250) \
	$(am__objects_251) $(am__objects_252)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_253 = lib539-first.$(OBJEXT)
am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_253)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_254 = lib540-first.$(OBJEXT)
am__objects_255 = lib540-testutil.$(OBJEXT)
am__objects_256 = ../../lib/lib540-warnless.$(OBJEXT)
am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_254) \
	$(am__objects_255) $(am__objects_256)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_257 = lib541-first.$(OBJEXT)
am__objects_258 = ../../lib/lib541-curl_multibyte.$(OBJEXT)
am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_257) \
	$(am__objects_258)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_259 = lib542-first.$(OBJEXT)
am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_259)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_260 = lib543-first.$(OBJEXT)
am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_260)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_261 = lib544-first.$(OBJEXT)
am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_261)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_262 = lib545-first.$(OBJEXT)
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_262)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_263 = lib547-first.$(OBJEXT)
am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_263)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_264 = lib548-first.$(OBJEXT)
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_264)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_265 = lib549-first.$(OBJEXT)
am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_265)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_266 = lib552-first.$(OBJEXT)
am__objects_267 = ../../lib/lib552-warnless.$(OBJEXT)
am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_266) \
	$(am__objects_267)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_268 = lib553-first.$(OBJEXT)
am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_268)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_269 = lib554-first.$(OBJEXT)
am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_269)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_270 = lib555-first.$(OBJEXT)
am__objects_271 = lib555-testutil.$(OBJEXT)
am__objects_272 = ../../lib/lib555-warnless.$(OBJEXT)
am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_270) \
	$(am__objects_271) $(am__objects_272)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_273 = lib556-first.$(OBJEXT)
am__objects_274 = ../../lib/lib556-warnless.$(OBJEXT)
am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_273) \
	$(am__objects_274)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_275 = lib557-first.$(OBJEXT)
am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_275)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_276 = lib558-first.$(OBJEXT)
am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_276)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_277 = lib559-first.$(OBJEXT)
am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_277)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_278 = lib560-first.$(OBJEXT)
am__objects_279 = lib560-testutil.$(OBJEXT)
am__objects_280 = ../../lib/lib560-warnless.$(OBJEXT)
am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_278) \
	$(am__objects_279) $(am__objects_280)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_281 = lib562-first.$(OBJEXT)
am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_281)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_282 = lib564-first.$(OBJEXT)
am__objects_283 = lib564-testutil.$(OBJEXT)
am__objects_284 = ../../lib/lib564-warnless.$(OBJEXT)
am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_282) \
	$(am__objects_283) $(am__objects_284)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_285 = lib565-first.$(OBJEXT)
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_285)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_286 = lib566-first.$(OBJEXT)
am__objects_287 = ../../lib/lib566-curl_multibyte.$(OBJEXT)
am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_286) \
	$(am__objects_287)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_288 = lib567-first.$(OBJEXT)
am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_288)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_289 = lib568-first.$(OBJEXT)
am__objects_290 = ../../lib/lib568-curl_multibyte.$(OBJEXT)
am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_289) \
	$(am__objects_290)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_291 = lib569-first.$(OBJEXT)
am__objects_292 = ../../lib/lib569-curl_multibyte.$(OBJEXT)
am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_291) \
	$(am__objects_292)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_293 = lib570-first.$(OBJEXT)
am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_293)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_294 = lib571-first.$(OBJEXT)
am__objects_295 = ../../lib/lib571-warnless.$(OBJEXT)
am__objects_296 = ../../lib/lib571-curl_multibyte.$(OBJEXT)
am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_294) \
	$(am__objects_295) $(am__objects_296)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_297 = lib572-first.$(OBJEXT)
am__objects_298 = ../../lib/lib572-curl_multibyte.$(OBJEXT)
am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_297) \
	$(am__objects_298)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_299 = lib573-first.$(OBJEXT)
am__objects_300 = lib573-testutil.$(OBJEXT)
am__objects_301 = ../../lib/lib573-warnless.$(OBJEXT)
am__objects_302 = lib573-testtrace.$(OBJEXT)
am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_299) \
	$(am__objects_300) $(am__objects_301) $(am__objects_302)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_303 = lib574-first.$(OBJEXT)
am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_303)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_304 = lib575-first.$(OBJEXT)
am__objects_305 = lib575-testutil.$(OBJEXT)
am__objects_306 = ../../lib/lib575-warnless.$(OBJEXT)
am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_304) \
	$(am__objects_305) $(am__objects_306)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_307 = lib576-first.$(OBJEXT)
am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_307)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_308 = lib578-first.$(OBJEXT)
am__objects_309 = ../../lib/lib578-curl_multibyte.$(OBJEXT)
am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_308) \
	$(am__objects_309)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_310 = lib579-first.$(OBJEXT)
am__objects_311 = ../../lib/lib579-curl_multibyte.$(OBJEXT)
am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_310) \
	$(am__objects_311)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_312 = lib582-first.$(OBJEXT)
am__objects_313 = lib582-testutil.$(OBJEXT)
am__objects_314 = ../../lib/lib582-warnless.$(OBJEXT)
am__objects_315 = ../../lib/lib582-curl_multibyte.$(OBJEXT)
am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_312) \
	$(am__objects_313) $(am__objects_314) $(am__objects_315)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_316 = lib583-first.$(OBJEXT)
am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_316)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_317 = lib584-first.$(OBJEXT)
am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_317)
lib584_OBJECTS = $(am_lib584_OBJECTS)
lib584_LDADD = $(LDADD)
lib584_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_318 = lib585-first.$(OBJEXT)
am__objects_319 = lib585-testutil.$(OBJEXT)
am__objects_320 = lib585-testtrace.$(OBJEXT)
am__objects_321 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_318) \
	$(am__objects_319) $(am__objects_320) $(am__objects_321)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_322 = lib586-first.$(OBJEXT)
am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_322)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_323 = lib587-first.$(OBJEXT)
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_323)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_324 = lib589-first.$(OBJEXT)
am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_324)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_325 = lib590-first.$(OBJEXT)
am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_325)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_326 = lib591-first.$(OBJEXT)
am__objects_327 = lib591-testutil.$(OBJEXT)
am__objects_328 = ../../lib/lib591-warnless.$(OBJEXT)
am__objects_329 = ../../lib/lib591-curl_multibyte.$(OBJEXT)
am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_326) \
	$(am__objects_327) $(am__objects_328) $(am__objects_329)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_330 = lib597-first.$(OBJEXT)
am__objects_331 = lib597-testutil.$(OBJEXT)
am__objects_332 = ../../lib/lib597-warnless.$(OBJEXT)
am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_330) \
	$(am__objects_331) $(am__objects_332)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_333 = lib598-first.$(OBJEXT)
am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_333)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_334 = lib599-first.$(OBJEXT)
am__objects_335 = ../../lib/lib599-curl_multibyte.$(OBJEXT)
am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_334) \
	$(am__objects_335)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_336 = lib643-first.$(OBJEXT)
am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_336)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_337 = lib644-first.$(OBJEXT)
am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_337)
lib644_OBJECTS = $(am_lib644_OBJECTS)
lib644_LDADD = $(LDADD)
lib644_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_338 = lib645-first.$(OBJEXT)
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_338)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_339 = lib650-first.$(OBJEXT)
am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_339)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_340 = lib651-first.$(OBJEXT)
am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_340)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_341 = lib652-first.$(OBJEXT)
am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_341)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_342 = lib653-first.$(OBJEXT)
am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_342)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_343 = lib654-first.$(OBJEXT)
am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_343)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_344 = lib655-first.$(OBJEXT)
am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_344)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_345 = lib658-first.$(OBJEXT)
am__objects_346 = lib658-testutil.$(OBJEXT)
am__objects_347 = ../../lib/lib658-warnless.$(OBJEXT)
am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_345) \
	$(am__objects_346) $(am__objects_347)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_348 = lib659-first.$(OBJEXT)
am__objects_349 = lib659-testutil.$(OBJEXT)
am__objects_350 = ../../lib/lib659-warnless.$(OBJEXT)
am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_348) \
	$(am__objects_349) $(am__objects_350)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_351 = lib661-first.$(OBJEXT)
am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_351)
lib661_OBJECTS = $(am_lib661_OBJECTS)
lib661_LDADD = $(LDADD)
lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_352 = lib666-first.$(OBJEXT)
am_lib666_OBJECTS = lib666-lib666.$(OBJEXT) $(am__objects_352)
lib666_OBJECTS = $(am_lib666_OBJECTS)
lib666_LDADD = $(LDADD)
lib666_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_353 = lib667-first.$(OBJEXT)
am__objects_354 = lib667-testutil.$(OBJEXT)
am__objects_355 = ../../lib/lib667-warnless.$(OBJEXT)
am_lib667_OBJECTS = lib667-lib667.$(OBJEXT) $(am__objects_353) \
	$(am__objects_354) $(am__objects_355)
lib667_OBJECTS = $(am_lib667_OBJECTS)
lib667_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_356 = lib668-first.$(OBJEXT)
am__objects_357 = lib668-testutil.$(OBJEXT)
am__objects_358 = ../../lib/lib668-warnless.$(OBJEXT)
am_lib668_OBJECTS = lib668-lib668.$(OBJEXT) $(am__objects_356) \
	$(am__objects_357) $(am__objects_358)
lib668_OBJECTS = $(am_lib668_OBJECTS)
lib668_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_359 = lib670-first.$(OBJEXT)
am__objects_360 = lib670-testutil.$(OBJEXT)
am__objects_361 = ../../lib/lib670-warnless.$(OBJEXT)
am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_359) \
	$(am__objects_360) $(am__objects_361)
lib670_OBJECTS = $(am_lib670_OBJECTS)
lib670_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_362 = lib671-first.$(OBJEXT)
am__objects_363 = lib671-testutil.$(OBJEXT)
am__objects_364 = ../../lib/lib671-warnless.$(OBJEXT)
am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_362) \
	$(am__objects_363) $(am__objects_364)
lib671_OBJECTS = $(am_lib671_OBJECTS)
lib671_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_365 = lib672-first.$(OBJEXT)
am__objects_366 = lib672-testutil.$(OBJEXT)
am__objects_367 = ../../lib/lib672-warnless.$(OBJEXT)
am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_365) \
	$(am__objects_366) $(am__objects_367)
lib672_OBJECTS = $(am_lib672_OBJECTS)
lib672_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_368 = lib673-first.$(OBJEXT)
am__objects_369 = lib673-testutil.$(OBJEXT)
am__objects_370 = ../../lib/lib673-warnless.$(OBJEXT)
am_lib673_OBJECTS = lib673-lib670.$(OBJEXT) $(am__objects_368) \
	$(am__objects_369) $(am__objects_370)
lib673_OBJECTS = $(am_lib673_OBJECTS)
lib673_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_371 = lib674-first.$(OBJEXT)
am__objects_372 = lib674-testutil.$(OBJEXT)
am__objects_373 = ../../lib/lib674-warnless.$(OBJEXT)
am_lib674_OBJECTS = lib674-lib674.$(OBJEXT) $(am__objects_371) \
	$(am__objects_372) $(am__objects_373)
lib674_OBJECTS = $(am_lib674_OBJECTS)
lib674_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_374 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
	$(am__objects_374)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_375 = libntlmconnect-first.$(OBJEXT)
am__objects_376 = libntlmconnect-testutil.$(OBJEXT)
am__objects_377 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
	$(am__objects_375) $(am__objects_376) $(am__objects_377)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
1525
1526
1527
1528
1529
1530
1531
1532

1533
1534
1535
1536
1537
1538
1539
	./$(DEPDIR)/lib1557-lib1557.Po ./$(DEPDIR)/lib1557-testutil.Po \
	./$(DEPDIR)/lib1558.Po ./$(DEPDIR)/lib1559.Po \
	./$(DEPDIR)/lib1560.Po ./$(DEPDIR)/lib1564-first.Po \
	./$(DEPDIR)/lib1564-lib1564.Po ./$(DEPDIR)/lib1564-testutil.Po \
	./$(DEPDIR)/lib1565-first.Po ./$(DEPDIR)/lib1565-lib1565.Po \
	./$(DEPDIR)/lib1565-testutil.Po ./$(DEPDIR)/lib1567-first.Po \
	./$(DEPDIR)/lib1567-lib1567.Po ./$(DEPDIR)/lib1568-first.Po \
	./$(DEPDIR)/lib1568-lib1568.Po ./$(DEPDIR)/lib1591-first.Po \

	./$(DEPDIR)/lib1591-lib1591.Po ./$(DEPDIR)/lib1591-testutil.Po \
	./$(DEPDIR)/lib1592-first.Po ./$(DEPDIR)/lib1592-lib1592.Po \
	./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
	./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
	./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
	./$(DEPDIR)/lib1905-first.Po ./$(DEPDIR)/lib1905-lib1905.Po \
	./$(DEPDIR)/lib1905-testutil.Po ./$(DEPDIR)/lib1906-first.Po \







|
>







1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
	./$(DEPDIR)/lib1557-lib1557.Po ./$(DEPDIR)/lib1557-testutil.Po \
	./$(DEPDIR)/lib1558.Po ./$(DEPDIR)/lib1559.Po \
	./$(DEPDIR)/lib1560.Po ./$(DEPDIR)/lib1564-first.Po \
	./$(DEPDIR)/lib1564-lib1564.Po ./$(DEPDIR)/lib1564-testutil.Po \
	./$(DEPDIR)/lib1565-first.Po ./$(DEPDIR)/lib1565-lib1565.Po \
	./$(DEPDIR)/lib1565-testutil.Po ./$(DEPDIR)/lib1567-first.Po \
	./$(DEPDIR)/lib1567-lib1567.Po ./$(DEPDIR)/lib1568-first.Po \
	./$(DEPDIR)/lib1568-lib1568.Po ./$(DEPDIR)/lib1569-first.Po \
	./$(DEPDIR)/lib1569-lib1569.Po ./$(DEPDIR)/lib1591-first.Po \
	./$(DEPDIR)/lib1591-lib1591.Po ./$(DEPDIR)/lib1591-testutil.Po \
	./$(DEPDIR)/lib1592-first.Po ./$(DEPDIR)/lib1592-lib1592.Po \
	./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
	./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
	./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
	./$(DEPDIR)/lib1905-first.Po ./$(DEPDIR)/lib1905-lib1905.Po \
	./$(DEPDIR)/lib1905-testutil.Po ./$(DEPDIR)/lib1906-first.Po \
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
	$(lib1533_SOURCES) $(lib1534_SOURCES) $(lib1535_SOURCES) \
	$(lib1536_SOURCES) $(lib1537_SOURCES) $(lib1538_SOURCES) \
	$(lib1539_SOURCES) $(lib1540_SOURCES) $(lib1550_SOURCES) \
	$(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
	$(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
	$(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
	$(lib1560_SOURCES) $(lib1564_SOURCES) $(lib1565_SOURCES) \
	$(lib1567_SOURCES) $(lib1568_SOURCES) $(lib1591_SOURCES) \
	$(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1594_SOURCES) \
	$(lib1596_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \
	$(lib1907_SOURCES) $(lib1908_SOURCES) $(lib1910_SOURCES) \
	$(lib1911_SOURCES) $(lib1912_SOURCES) $(lib1913_SOURCES) \
	$(lib1915_SOURCES) $(lib1916_SOURCES) $(lib1917_SOURCES) \
	$(lib1918_SOURCES) $(lib1933_SOURCES) $(lib1934_SOURCES) \
	$(lib1935_SOURCES) $(lib1936_SOURCES) $(lib3010_SOURCES) \
	$(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
	$(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
	$(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
	$(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
	$(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
	$(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
	$(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
	$(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
	$(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
	$(lib529_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
	$(lib537_SOURCES) $(lib539_SOURCES) $(lib540_SOURCES) \
	$(lib541_SOURCES) $(lib542_SOURCES) $(lib543_SOURCES) \
	$(lib544_SOURCES) $(lib545_SOURCES) $(lib547_SOURCES) \
	$(lib548_SOURCES) $(lib549_SOURCES) $(lib552_SOURCES) \
	$(lib553_SOURCES) $(lib554_SOURCES) $(lib555_SOURCES) \
	$(lib556_SOURCES) $(lib557_SOURCES) $(lib558_SOURCES) \
	$(lib559_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
	$(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
	$(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
	$(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
	$(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
	$(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
	$(lib582_SOURCES) $(lib583_SOURCES) $(lib584_SOURCES) \
	$(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
	$(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \
	$(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \
	$(lib643_SOURCES) $(lib644_SOURCES) $(lib645_SOURCES) \
	$(lib650_SOURCES) $(lib651_SOURCES) $(lib652_SOURCES) \
	$(lib653_SOURCES) $(lib654_SOURCES) $(lib655_SOURCES) \
	$(lib658_SOURCES) $(lib659_SOURCES) $(lib661_SOURCES) \
	$(lib666_SOURCES) $(lib667_SOURCES) $(lib668_SOURCES) \
	$(lib670_SOURCES) $(lib671_SOURCES) $(lib672_SOURCES) \
	$(lib673_SOURCES) $(lib674_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
	$(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
	$(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
	$(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
	$(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
	$(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
	$(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
	$(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
	$(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
	$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
	$(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
	$(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
	$(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
	$(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \
	$(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
	$(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
	$(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
	$(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1564_SOURCES) \
	$(lib1565_SOURCES) $(lib1567_SOURCES) $(lib1568_SOURCES) \
	$(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1593_SOURCES) \
	$(lib1594_SOURCES) $(lib1596_SOURCES) $(lib1905_SOURCES) \
	$(lib1906_SOURCES) $(lib1907_SOURCES) $(lib1908_SOURCES) \
	$(lib1910_SOURCES) $(lib1911_SOURCES) $(lib1912_SOURCES) \
	$(lib1913_SOURCES) $(lib1915_SOURCES) $(lib1916_SOURCES) \
	$(lib1917_SOURCES) $(lib1918_SOURCES) $(lib1933_SOURCES) \
	$(lib1934_SOURCES) $(lib1935_SOURCES) $(lib1936_SOURCES) \







|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







1724
1725
1726
1727
1728
1729
1730
1731





























































1732
1733
1734
1735
1736
1737
1738
	$(lib1533_SOURCES) $(lib1534_SOURCES) $(lib1535_SOURCES) \
	$(lib1536_SOURCES) $(lib1537_SOURCES) $(lib1538_SOURCES) \
	$(lib1539_SOURCES) $(lib1540_SOURCES) $(lib1550_SOURCES) \
	$(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
	$(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
	$(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
	$(lib1560_SOURCES) $(lib1564_SOURCES) $(lib1565_SOURCES) \
	$(lib1567_SOURCES) $(lib1568_SOURCES) $(lib1569_SOURCES) \





























































	$(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1593_SOURCES) \
	$(lib1594_SOURCES) $(lib1596_SOURCES) $(lib1905_SOURCES) \
	$(lib1906_SOURCES) $(lib1907_SOURCES) $(lib1908_SOURCES) \
	$(lib1910_SOURCES) $(lib1911_SOURCES) $(lib1912_SOURCES) \
	$(lib1913_SOURCES) $(lib1915_SOURCES) $(lib1916_SOURCES) \
	$(lib1917_SOURCES) $(lib1918_SOURCES) $(lib1933_SOURCES) \
	$(lib1934_SOURCES) $(lib1935_SOURCES) $(lib1936_SOURCES) \
1820
1821
1822
1823
1824
1825
1826






























































1827
1828
1829
1830
1831
1832
1833
	$(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \
	$(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
	$(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \
	$(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \
	$(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES)






























































am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
	$(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \
	$(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
	$(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \
	$(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \
	$(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
	$(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
	$(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
	$(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
	$(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
	$(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
	$(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
	$(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
	$(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
	$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
	$(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
	$(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
	$(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
	$(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \
	$(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
	$(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
	$(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
	$(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1564_SOURCES) \
	$(lib1565_SOURCES) $(lib1567_SOURCES) $(lib1568_SOURCES) \
	$(lib1569_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
	$(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
	$(lib1905_SOURCES) $(lib1906_SOURCES) $(lib1907_SOURCES) \
	$(lib1908_SOURCES) $(lib1910_SOURCES) $(lib1911_SOURCES) \
	$(lib1912_SOURCES) $(lib1913_SOURCES) $(lib1915_SOURCES) \
	$(lib1916_SOURCES) $(lib1917_SOURCES) $(lib1918_SOURCES) \
	$(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \
	$(lib1936_SOURCES) $(lib3010_SOURCES) $(lib500_SOURCES) \
	$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
	$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
	$(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
	$(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
	$(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
	$(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
	$(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
	$(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
	$(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
	$(lib532_SOURCES) $(lib533_SOURCES) $(lib537_SOURCES) \
	$(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
	$(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
	$(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
	$(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
	$(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
	$(lib557_SOURCES) $(lib558_SOURCES) $(lib559_SOURCES) \
	$(lib560_SOURCES) $(lib562_SOURCES) $(lib564_SOURCES) \
	$(lib565_SOURCES) $(lib566_SOURCES) $(lib567_SOURCES) \
	$(lib568_SOURCES) $(lib569_SOURCES) $(lib570_SOURCES) \
	$(lib571_SOURCES) $(lib572_SOURCES) $(lib573_SOURCES) \
	$(lib574_SOURCES) $(lib575_SOURCES) $(lib576_SOURCES) \
	$(lib578_SOURCES) $(lib579_SOURCES) $(lib582_SOURCES) \
	$(lib583_SOURCES) $(lib584_SOURCES) $(lib585_SOURCES) \
	$(lib586_SOURCES) $(lib587_SOURCES) $(lib589_SOURCES) \
	$(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
	$(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \
	$(lib644_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
	$(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
	$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
	$(lib659_SOURCES) $(lib661_SOURCES) $(lib666_SOURCES) \
	$(lib667_SOURCES) $(lib668_SOURCES) $(lib670_SOURCES) \
	$(lib671_SOURCES) $(lib672_SOURCES) $(lib673_SOURCES) \
	$(lib674_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES)
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000

2001
2002
2003



2004
2005
2006
2007
2008
2009
2010
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







1987
1988
1989
1990
1991
1992
1993

1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
2539
2540
2541
2542
2543
2544
2545


2546
2547
2548
2549
2550
2551
2552
lib1565_SOURCES = lib1565.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1565_LDADD = $(TESTUTIL_LIBS)
lib1565_CPPFLAGS = $(AM_CPPFLAGS)
lib1567_SOURCES = lib1567.c $(SUPPORTFILES)
lib1567_CPPFLAGS = $(AM_CPPFLAGS)
lib1568_SOURCES = lib1568.c $(SUPPORTFILES)
lib1568_CPPFLAGS = $(AM_CPPFLAGS)


lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591
lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)
lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)







>
>







2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
lib1565_SOURCES = lib1565.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1565_LDADD = $(TESTUTIL_LIBS)
lib1565_CPPFLAGS = $(AM_CPPFLAGS)
lib1567_SOURCES = lib1567.c $(SUPPORTFILES)
lib1567_CPPFLAGS = $(AM_CPPFLAGS)
lib1568_SOURCES = lib1568.c $(SUPPORTFILES)
lib1568_CPPFLAGS = $(AM_CPPFLAGS)
lib1569_SOURCES = lib1569.c $(SUPPORTFILES)
lib1569_CPPFLAGS = $(AM_CPPFLAGS)
lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591
lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)
lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
3008
3009
3010
3011
3012
3013
3014




3015
3016
3017
3018
3019
3020
3021
lib1567$(EXEEXT): $(lib1567_OBJECTS) $(lib1567_DEPENDENCIES) $(EXTRA_lib1567_DEPENDENCIES) 
	@rm -f lib1567$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1567_OBJECTS) $(lib1567_LDADD) $(LIBS)

lib1568$(EXEEXT): $(lib1568_OBJECTS) $(lib1568_DEPENDENCIES) $(EXTRA_lib1568_DEPENDENCIES) 
	@rm -f lib1568$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1568_OBJECTS) $(lib1568_LDADD) $(LIBS)




../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1591$(EXEEXT): $(lib1591_OBJECTS) $(lib1591_DEPENDENCIES) $(EXTRA_lib1591_DEPENDENCIES) 
	@rm -f lib1591$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1591_OBJECTS) $(lib1591_LDADD) $(LIBS)
../../lib/lib1592-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \







>
>
>
>







3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
lib1567$(EXEEXT): $(lib1567_OBJECTS) $(lib1567_DEPENDENCIES) $(EXTRA_lib1567_DEPENDENCIES) 
	@rm -f lib1567$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1567_OBJECTS) $(lib1567_LDADD) $(LIBS)

lib1568$(EXEEXT): $(lib1568_OBJECTS) $(lib1568_DEPENDENCIES) $(EXTRA_lib1568_DEPENDENCIES) 
	@rm -f lib1568$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1568_OBJECTS) $(lib1568_LDADD) $(LIBS)

lib1569$(EXEEXT): $(lib1569_OBJECTS) $(lib1569_DEPENDENCIES) $(EXTRA_lib1569_DEPENDENCIES) 
	@rm -f lib1569$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1569_OBJECTS) $(lib1569_LDADD) $(LIBS)
../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1591$(EXEEXT): $(lib1591_OBJECTS) $(lib1591_DEPENDENCIES) $(EXTRA_lib1591_DEPENDENCIES) 
	@rm -f lib1591$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1591_OBJECTS) $(lib1591_LDADD) $(LIBS)
../../lib/lib1592-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
3913
3914
3915
3916
3917
3918
3919


3920
3921
3922
3923
3924
3925
3926
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-lib1565.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1567-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1567-lib1567.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1568-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1568-lib1568.Po@am__quote@ # am--include-marker


@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-lib1591.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-lib1592.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1593.Po@am__quote@ # am--include-marker







>
>







3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-lib1565.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1567-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1567-lib1567.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1568-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1568-lib1568.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1569-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1569-lib1569.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-lib1591.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-lib1592.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1593.Po@am__quote@ # am--include-marker
6886
6887
6888
6889
6890
6891
6892




























6893
6894
6895
6896
6897
6898
6899
lib1568-first.obj: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1568-first.obj -MD -MP -MF $(DEPDIR)/lib1568-first.Tpo -c -o lib1568-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1568-first.Tpo $(DEPDIR)/lib1568-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1568-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1568-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`





























lib1591-lib1591.o: lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1591-lib1591.o -MD -MP -MF $(DEPDIR)/lib1591-lib1591.Tpo -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1591-lib1591.Tpo $(DEPDIR)/lib1591-lib1591.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1591.c' object='lib1591-lib1591.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
lib1568-first.obj: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1568-first.obj -MD -MP -MF $(DEPDIR)/lib1568-first.Tpo -c -o lib1568-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1568-first.Tpo $(DEPDIR)/lib1568-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1568-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1568-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`

lib1569-lib1569.o: lib1569.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1569-lib1569.o -MD -MP -MF $(DEPDIR)/lib1569-lib1569.Tpo -c -o lib1569-lib1569.o `test -f 'lib1569.c' || echo '$(srcdir)/'`lib1569.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1569-lib1569.Tpo $(DEPDIR)/lib1569-lib1569.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1569.c' object='lib1569-lib1569.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1569-lib1569.o `test -f 'lib1569.c' || echo '$(srcdir)/'`lib1569.c

lib1569-lib1569.obj: lib1569.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1569-lib1569.obj -MD -MP -MF $(DEPDIR)/lib1569-lib1569.Tpo -c -o lib1569-lib1569.obj `if test -f 'lib1569.c'; then $(CYGPATH_W) 'lib1569.c'; else $(CYGPATH_W) '$(srcdir)/lib1569.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1569-lib1569.Tpo $(DEPDIR)/lib1569-lib1569.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1569.c' object='lib1569-lib1569.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1569-lib1569.obj `if test -f 'lib1569.c'; then $(CYGPATH_W) 'lib1569.c'; else $(CYGPATH_W) '$(srcdir)/lib1569.c'; fi`

lib1569-first.o: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1569-first.o -MD -MP -MF $(DEPDIR)/lib1569-first.Tpo -c -o lib1569-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1569-first.Tpo $(DEPDIR)/lib1569-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1569-first.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1569-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c

lib1569-first.obj: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1569-first.obj -MD -MP -MF $(DEPDIR)/lib1569-first.Tpo -c -o lib1569-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1569-first.Tpo $(DEPDIR)/lib1569-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1569-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1569-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`

lib1591-lib1591.o: lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1591-lib1591.o -MD -MP -MF $(DEPDIR)/lib1591-lib1591.Tpo -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1591-lib1591.Tpo $(DEPDIR)/lib1591-lib1591.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1591.c' object='lib1591-lib1591.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c

12368
12369
12370
12371
12372
12373
12374


12375
12376
12377
12378
12379
12380
12381
	-rm -f ./$(DEPDIR)/lib1565-first.Po
	-rm -f ./$(DEPDIR)/lib1565-lib1565.Po
	-rm -f ./$(DEPDIR)/lib1565-testutil.Po
	-rm -f ./$(DEPDIR)/lib1567-first.Po
	-rm -f ./$(DEPDIR)/lib1567-lib1567.Po
	-rm -f ./$(DEPDIR)/lib1568-first.Po
	-rm -f ./$(DEPDIR)/lib1568-lib1568.Po


	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po







>
>







12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
	-rm -f ./$(DEPDIR)/lib1565-first.Po
	-rm -f ./$(DEPDIR)/lib1565-lib1565.Po
	-rm -f ./$(DEPDIR)/lib1565-testutil.Po
	-rm -f ./$(DEPDIR)/lib1567-first.Po
	-rm -f ./$(DEPDIR)/lib1567-lib1567.Po
	-rm -f ./$(DEPDIR)/lib1568-first.Po
	-rm -f ./$(DEPDIR)/lib1568-lib1568.Po
	-rm -f ./$(DEPDIR)/lib1569-first.Po
	-rm -f ./$(DEPDIR)/lib1569-lib1569.Po
	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
12974
12975
12976
12977
12978
12979
12980


12981
12982
12983
12984
12985
12986
12987
	-rm -f ./$(DEPDIR)/lib1565-first.Po
	-rm -f ./$(DEPDIR)/lib1565-lib1565.Po
	-rm -f ./$(DEPDIR)/lib1565-testutil.Po
	-rm -f ./$(DEPDIR)/lib1567-first.Po
	-rm -f ./$(DEPDIR)/lib1567-lib1567.Po
	-rm -f ./$(DEPDIR)/lib1568-first.Po
	-rm -f ./$(DEPDIR)/lib1568-lib1568.Po


	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po







>
>







13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
	-rm -f ./$(DEPDIR)/lib1565-first.Po
	-rm -f ./$(DEPDIR)/lib1565-lib1565.Po
	-rm -f ./$(DEPDIR)/lib1565-testutil.Po
	-rm -f ./$(DEPDIR)/lib1567-first.Po
	-rm -f ./$(DEPDIR)/lib1567-lib1567.Po
	-rm -f ./$(DEPDIR)/lib1568-first.Po
	-rm -f ./$(DEPDIR)/lib1568-lib1568.Po
	-rm -f ./$(DEPDIR)/lib1569-first.Po
	-rm -f ./$(DEPDIR)/lib1569-lib1569.Po
	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
Changes to jni/curl/tests/libtest/Makefile.inc.
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
 lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515         lib1517 \
 lib1518         lib1520 lib1521 lib1522 lib1523 \
 lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
 lib1534 lib1535 lib1536 lib1537 lib1538 lib1539 \
 lib1540         \
 lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
 lib1558 lib1559 lib1560 lib1564 lib1565 lib1567 lib1568 \
 lib1591 lib1592 lib1593 lib1594 lib1596 \
         lib1905 lib1906 lib1907 lib1908 lib1910 lib1911 lib1912 lib1913 \
         lib1915 lib1916 lib1917 lib1918 lib1933 lib1934 lib1935 lib1936 \
         lib3010

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
 ../../lib/curl_ctype.c  ../../lib/dynbuf.c ../../lib/strdup.c







|







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
 lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515         lib1517 \
 lib1518         lib1520 lib1521 lib1522 lib1523 \
 lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
 lib1534 lib1535 lib1536 lib1537 lib1538 lib1539 \
 lib1540         \
 lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
 lib1558 lib1559 lib1560 lib1564 lib1565 lib1567 lib1568 lib1569 \
 lib1591 lib1592 lib1593 lib1594 lib1596 \
         lib1905 lib1906 lib1907 lib1908 lib1910 lib1911 lib1912 lib1913 \
         lib1915 lib1916 lib1917 lib1918 lib1933 lib1934 lib1935 lib1936 \
         lib3010

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
 ../../lib/curl_ctype.c  ../../lib/dynbuf.c ../../lib/strdup.c
603
604
605
606
607
608
609



610
611
612
613
614
615
616
lib1565_CPPFLAGS = $(AM_CPPFLAGS)

lib1567_SOURCES = lib1567.c $(SUPPORTFILES)
lib1567_CPPFLAGS = $(AM_CPPFLAGS)

lib1568_SOURCES = lib1568.c $(SUPPORTFILES)
lib1568_CPPFLAGS = $(AM_CPPFLAGS)




lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591

lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)







>
>
>







603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
lib1565_CPPFLAGS = $(AM_CPPFLAGS)

lib1567_SOURCES = lib1567.c $(SUPPORTFILES)
lib1567_CPPFLAGS = $(AM_CPPFLAGS)

lib1568_SOURCES = lib1568.c $(SUPPORTFILES)
lib1568_CPPFLAGS = $(AM_CPPFLAGS)

lib1569_SOURCES = lib1569.c $(SUPPORTFILES)
lib1569_CPPFLAGS = $(AM_CPPFLAGS)

lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591

lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)
Changes to jni/curl/tests/libtest/lib1156.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
                                                          CURLE_RANGE_ERROR },
  { F_RESUME |                      F_CONTENTRANGE,                CURLE_OK },
  { F_RESUME |             F_FAIL |                  F_IGNOREBODY,
                                                          CURLE_RANGE_ERROR },
  { F_RESUME |             F_FAIL | F_CONTENTRANGE,                CURLE_OK },
  { F_RESUME | F_HTTP416 |                           F_IGNOREBODY, CURLE_OK },
  { F_RESUME | F_HTTP416 |          F_CONTENTRANGE | F_IGNOREBODY, CURLE_OK },
  { F_RESUME | F_HTTP416 | F_FAIL |                  F_IGNOREBODY,
                                                  CURLE_HTTP_RETURNED_ERROR },
  { F_RESUME | F_HTTP416 | F_FAIL | F_CONTENTRANGE | F_IGNOREBODY,
                                                  CURLE_HTTP_RETURNED_ERROR }
};

static int      hasbody;

static size_t writedata(char *data, size_t size, size_t nmemb, void *userdata)
{
  (void) data;
  (void) userdata;

  if(size && nmemb)
    hasbody = 1;
  return size * nmemb;
}

static int onetest(CURL *curl, const char *url, const struct testparams *p)

{
  CURLcode res;
  unsigned int replyselector;
  char urlbuf[256];

  replyselector = (p->flags & F_CONTENTRANGE)? 1: 0;
  if(p->flags & F_HTTP416)
    replyselector += 2;
  msnprintf(urlbuf, sizeof(urlbuf), "%s%04u", url, replyselector);
  test_setopt(curl, CURLOPT_URL, urlbuf);
  test_setopt(curl, CURLOPT_RESUME_FROM, (p->flags & F_RESUME)? 3: 0);
  test_setopt(curl, CURLOPT_RANGE, !(p->flags & F_RESUME)?
                                   "3-1000000": (char *) NULL);
  test_setopt(curl, CURLOPT_FAILONERROR, (p->flags & F_FAIL)? 1: 0);
  hasbody = 0;
  res = curl_easy_perform(curl);
  if(res != p->result) {
    fprintf(stderr, "bad error code (%d): resume=%s, fail=%s, http416=%s, "
                    "content-range=%s, expected=%d\n", res,
                    (p->flags & F_RESUME)? "yes": "no",
                    (p->flags & F_FAIL)? "yes": "no",
                    (p->flags & F_HTTP416)? "yes": "no",
                    (p->flags & F_CONTENTRANGE)? "yes": "no",
                    p->result);
    return 1;
  }
  if(hasbody && (p->flags & F_IGNOREBODY)) {
    fprintf(stderr, "body should be ignored and is not: resume=%s, fail=%s, "
                    "http416=%s, content-range=%s\n",
                    (p->flags & F_RESUME)? "yes": "no",
                    (p->flags & F_FAIL)? "yes": "no",
                    (p->flags & F_HTTP416)? "yes": "no",
                    (p->flags & F_CONTENTRANGE)? "yes": "no");
    return 1;
  }
  return 0;

  test_cleanup:

  return 1;







|
<
















|
>

















|
|
|
|
|
|
|




|
|
|
|
|







60
61
62
63
64
65
66
67

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
                                                          CURLE_RANGE_ERROR },
  { F_RESUME |                      F_CONTENTRANGE,                CURLE_OK },
  { F_RESUME |             F_FAIL |                  F_IGNOREBODY,
                                                          CURLE_RANGE_ERROR },
  { F_RESUME |             F_FAIL | F_CONTENTRANGE,                CURLE_OK },
  { F_RESUME | F_HTTP416 |                           F_IGNOREBODY, CURLE_OK },
  { F_RESUME | F_HTTP416 |          F_CONTENTRANGE | F_IGNOREBODY, CURLE_OK },
  { F_RESUME | F_HTTP416 | F_FAIL |                  F_IGNOREBODY, CURLE_OK },

  { F_RESUME | F_HTTP416 | F_FAIL | F_CONTENTRANGE | F_IGNOREBODY,
                                                  CURLE_HTTP_RETURNED_ERROR }
};

static int      hasbody;

static size_t writedata(char *data, size_t size, size_t nmemb, void *userdata)
{
  (void) data;
  (void) userdata;

  if(size && nmemb)
    hasbody = 1;
  return size * nmemb;
}

static int onetest(CURL *curl, const char *url, const struct testparams *p,
                   size_t num)
{
  CURLcode res;
  unsigned int replyselector;
  char urlbuf[256];

  replyselector = (p->flags & F_CONTENTRANGE)? 1: 0;
  if(p->flags & F_HTTP416)
    replyselector += 2;
  msnprintf(urlbuf, sizeof(urlbuf), "%s%04u", url, replyselector);
  test_setopt(curl, CURLOPT_URL, urlbuf);
  test_setopt(curl, CURLOPT_RESUME_FROM, (p->flags & F_RESUME)? 3: 0);
  test_setopt(curl, CURLOPT_RANGE, !(p->flags & F_RESUME)?
                                   "3-1000000": (char *) NULL);
  test_setopt(curl, CURLOPT_FAILONERROR, (p->flags & F_FAIL)? 1: 0);
  hasbody = 0;
  res = curl_easy_perform(curl);
  if(res != p->result) {
    fprintf(stderr, "%d: bad error code (%d): resume=%s, fail=%s, http416=%s, "
            "content-range=%s, expected=%d\n", num, res,
            (p->flags & F_RESUME)? "yes": "no",
            (p->flags & F_FAIL)? "yes": "no",
            (p->flags & F_HTTP416)? "yes": "no",
            (p->flags & F_CONTENTRANGE)? "yes": "no",
            p->result);
    return 1;
  }
  if(hasbody && (p->flags & F_IGNOREBODY)) {
    fprintf(stderr, "body should be ignored and is not: resume=%s, fail=%s, "
            "http416=%s, content-range=%s\n",
            (p->flags & F_RESUME)? "yes": "no",
            (p->flags & F_FAIL)? "yes": "no",
            (p->flags & F_HTTP416)? "yes": "no",
            (p->flags & F_CONTENTRANGE)? "yes": "no");
    return 1;
  }
  return 0;

  test_cleanup:

  return 1;
143
144
145
146
147
148
149
150
151
152
153

154
155
156
157
158
159
160
161
162
    curl_global_cleanup();
    return TEST_ERR_MAJOR_BAD;
  }

  test_setopt(curl, CURLOPT_WRITEFUNCTION, writedata);

  for(i = 0; i < sizeof(params) / sizeof(params[0]); i++)
    status |= onetest(curl, URL, params + i);

  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return status;

  test_cleanup:

  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return (int)res;
}







|



>









143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
    curl_global_cleanup();
    return TEST_ERR_MAJOR_BAD;
  }

  test_setopt(curl, CURLOPT_WRITEFUNCTION, writedata);

  for(i = 0; i < sizeof(params) / sizeof(params[0]); i++)
    status |= onetest(curl, URL, params + i, i);

  curl_easy_cleanup(curl);
  curl_global_cleanup();
  fprintf(stderr, "%d\n", status);
  return status;

  test_cleanup:

  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return (int)res;
}
Changes to jni/curl/tests/libtest/lib1536.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

  res = curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
  if(res) {
    fprintf(stderr, "%s:%d curl_easy_getinfo() failed with code %d (%s)\n",
            __FILE__, __LINE__, res, curl_easy_strerror(res));
    goto test_cleanup;
  }
  if(memcmp(scheme, "HTTP", 5) != 0) {
    fprintf(stderr, "%s:%d scheme of http resource is incorrect; "
            "expected 'HTTP' but is %s\n",
            __FILE__, __LINE__,
            (scheme == NULL ? "NULL" : "invalid"));
    res = CURLE_HTTP_RETURNED_ERROR;
    goto test_cleanup;
  }







|







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

  res = curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
  if(res) {
    fprintf(stderr, "%s:%d curl_easy_getinfo() failed with code %d (%s)\n",
            __FILE__, __LINE__, res, curl_easy_strerror(res));
    goto test_cleanup;
  }
  if(scheme == NULL || memcmp(scheme, "HTTP", 5) != 0) {
    fprintf(stderr, "%s:%d scheme of http resource is incorrect; "
            "expected 'HTTP' but is %s\n",
            __FILE__, __LINE__,
            (scheme == NULL ? "NULL" : "invalid"));
    res = CURLE_HTTP_RETURNED_ERROR;
    goto test_cleanup;
  }
Changes to jni/curl/tests/libtest/lib1537.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
43
44
45
46
47
48
49
50
51
52
53
54

55
56
57
58
59
60
61
  asize = (int)sizeof(a);
  ptr = curl_easy_escape(NULL, (char *)a, asize);
  printf("%s\n", ptr);
  curl_free(ptr);

  /* deprecated API */
  ptr = curl_escape((char *)a, asize);
  printf("%s\n", ptr);
  if(!ptr) {
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }


  raw = curl_easy_unescape(NULL, ptr, (int)strlen(ptr), &outlen);
  printf("outlen == %d\n", outlen);
  printf("unescape == original? %s\n",
         memcmp(raw, a, outlen) ? "no" : "YES");
  curl_free(raw);








<




>







43
44
45
46
47
48
49

50
51
52
53
54
55
56
57
58
59
60
61
  asize = (int)sizeof(a);
  ptr = curl_easy_escape(NULL, (char *)a, asize);
  printf("%s\n", ptr);
  curl_free(ptr);

  /* deprecated API */
  ptr = curl_escape((char *)a, asize);

  if(!ptr) {
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }
  printf("%s\n", ptr);

  raw = curl_easy_unescape(NULL, ptr, (int)strlen(ptr), &outlen);
  printf("outlen == %d\n", outlen);
  printf("unescape == original? %s\n",
         memcmp(raw, a, outlen) ? "no" : "YES");
  curl_free(raw);

Added jni/curl/tests/libtest/lib1569.c.




























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "test.h"

#include "testtrace.h"
#include "memdebug.h"

int test(char *URL)
{
  CURLcode ret;
  CURL *hnd;
  curl_global_init(CURL_GLOBAL_ALL);

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_URL, URL);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_HEADER, 1L);

  ret = curl_easy_perform(hnd);

  curl_easy_setopt(hnd, CURLOPT_URL, libtest_arg2);
  ret = curl_easy_perform(hnd);
  curl_easy_cleanup(hnd);

  curl_global_cleanup();
  return (int)ret;
}
Changes to jni/curl/tests/libtest/lib543.c.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
  static const unsigned char a[] = {
      0x9c, 0x26, 0x4b, 0x3d, 0x49, 0x4, 0xa1, 0x1,
      0xe0, 0xd8, 0x7c,  0x20, 0xb7, 0xef, 0x53, 0x29, 0xfa,
      0x1d, 0x57, 0xe1};

  CURL *easy;
  int asize;
  char *s;
  CURLcode res = CURLE_OK;
  (void)URL;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    fprintf(stderr, "curl_easy_init() failed\n");
    res = TEST_ERR_MAJOR_BAD;
  }
  else {
    asize = (int)sizeof(a);

    s = curl_easy_escape(easy, (const char *)a, asize);

    if(s) {
      printf("%s\n", s);
      curl_free(s);
    }

    s = curl_easy_escape(easy, "", 0);







<
<










|
<
|







29
30
31
32
33
34
35


36
37
38
39
40
41
42
43
44
45
46

47
48
49
50
51
52
53
54
{
  static const unsigned char a[] = {
      0x9c, 0x26, 0x4b, 0x3d, 0x49, 0x4, 0xa1, 0x1,
      0xe0, 0xd8, 0x7c,  0x20, 0xb7, 0xef, 0x53, 0x29, 0xfa,
      0x1d, 0x57, 0xe1};

  CURL *easy;


  CURLcode res = CURLE_OK;
  (void)URL;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    fprintf(stderr, "curl_easy_init() failed\n");
    res = TEST_ERR_MAJOR_BAD;
  }
  else {
    int asize = (int)sizeof(a);

    char *s = curl_easy_escape(easy, (const char *)a, asize);

    if(s) {
      printf("%s\n", s);
      curl_free(s);
    }

    s = curl_easy_escape(easy, "", 0);
Changes to jni/curl/tests/libtest/lib556.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

  if(!res) {
    /* we are connected, now get a HTTP document the raw way */
    const char *request =
#ifdef CURL_DOES_CONVERSIONS
      /* ASCII representation with escape sequences for non-ASCII platforms */
      "\x47\x45\x54\x20\x2f\x35\x35\x36\x20\x48\x54\x54\x50\x2f\x31\x2e"
      "\x32\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x6e\x69\x6e\x6a\x61\x0d\x0a"
      "\x0d\x0a";
#else
      "GET /556 HTTP/1.2\r\n"
      "Host: ninja\r\n\r\n";
#endif
    size_t iolen = 0;

    res = curl_easy_send(curl, request, strlen(request), &iolen);

    if(!res) {







|


|







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

  if(!res) {
    /* we are connected, now get a HTTP document the raw way */
    const char *request =
#ifdef CURL_DOES_CONVERSIONS
      /* ASCII representation with escape sequences for non-ASCII platforms */
      "\x47\x45\x54\x20\x2f\x35\x35\x36\x20\x48\x54\x54\x50\x2f\x31\x2e"
      "\x31\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x6e\x69\x6e\x6a\x61\x0d\x0a"
      "\x0d\x0a";
#else
      "GET /556 HTTP/1.1\r\n"
      "Host: ninja\r\n\r\n";
#endif
    size_t iolen = 0;

    res = curl_easy_send(curl, request, strlen(request), &iolen);

    if(!res) {
jni/curl/tests/libtest/mk-lib1521.pl became executable.
Changes to jni/curl/tests/libtest/test1013.pl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
close CURL;

$curl_protocols =~ s/\r//;
$curl_protocols =~ /\w+: (.*)$/;
@curl = split / /,$1;

# These features are not supported by curl-config
@curl = grep(!/^(Debug|TrackMemory|Metalink|Largefile|CharConv)$/i, @curl);
@curl = sort @curl;

# Read the output of curl-config
my @curl_config;
open(CURLCONFIG, "sh $ARGV[0] --$what|") || die "Can't get curl-config $what list\n";
while( <CURLCONFIG> )
{







|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
close CURL;

$curl_protocols =~ s/\r//;
$curl_protocols =~ /\w+: (.*)$/;
@curl = split / /,$1;

# These features are not supported by curl-config
@curl = grep(!/^(Debug|TrackMemory|Metalink|CharConv)$/i, @curl);
@curl = sort @curl;

# Read the output of curl-config
my @curl_config;
open(CURLCONFIG, "sh $ARGV[0] --$what|") || die "Can't get curl-config $what list\n";
while( <CURLCONFIG> )
{
Changes to jni/curl/tests/manpage-scan.pl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2016 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2016 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
62
63
64
65
66
67
68
69








70
71
72
73
74
75
76
77
78
79
80
81
    'CURLINFO_TEXT' => 'none'
    );

sub scanmanpage {
    my ($file, @words) = @_;

    open(M, "<$file");
    my @m = <M>;








    close(M);

    foreach my $m (@words) {

        my @g = grep(/^\.IP $m/, @m);
        if(!$g[0]) {
            print STDERR "Missing mention of $m in $file\n";
            $errors++;
        }
    }
}








|
>
>
>
>
>
>
>
>



<
|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

81
82
83
84
85
86
87
88
    'CURLINFO_TEXT' => 'none'
    );

sub scanmanpage {
    my ($file, @words) = @_;

    open(M, "<$file");
    my @m;
    while(<M>) {
        if($_ =~ /^\.IP (.*)/) {
            my $w = $1;
            # "unquote" minuses
            $w =~ s/\\-/-/g;
            push @m, $w;
        }
    }
    close(M);

    foreach my $m (@words) {

        my @g = grep(/$m/, @m);
        if(!$g[0]) {
            print STDERR "Missing mention of $m in $file\n";
            $errors++;
        }
    }
}

202
203
204
205
206
207
208

209
210
211
212
213
214
215
216
# The man page may or may not be rebuilt, so check both possible locations
open(R, "<$buildroot/docs/curl.1") || open(R, "<$root/docs/curl.1") ||
    die "no input file";
my @manpage; # store all parsed parameters
while(<R>) {
    chomp;
    my $l= $_;

    if(/^\.IP \"(-[^\"]*)\"/) {
        my $str = $1;
        my $combo;
        if($str =~ /^-(.), --([a-z0-9.-]*)/) {
            # figure out the -short, --long combo
            $combo = "-$1, --$2";
        }
        elsif($str =~ /^--([a-z0-9.-]*)/) {







>
|







209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# The man page may or may not be rebuilt, so check both possible locations
open(R, "<$buildroot/docs/curl.1") || open(R, "<$root/docs/curl.1") ||
    die "no input file";
my @manpage; # store all parsed parameters
while(<R>) {
    chomp;
    my $l= $_;
    $l =~ s/\\-/-/g;
    if($l =~ /^\.IP \"(-[^\"]*)\"/) {
        my $str = $1;
        my $combo;
        if($str =~ /^-(.), --([a-z0-9.-]*)/) {
            # figure out the -short, --long combo
            $combo = "-$1, --$2";
        }
        elsif($str =~ /^--([a-z0-9.-]*)/) {
jni/curl/tests/mem-include-scan.pl became executable.
jni/curl/tests/nroff-scan.pl became executable.
Changes to jni/curl/tests/pathhelp.pm.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
###########################################################################
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2016 - 2020, Evgeny Grin (Karlson2k), <k2k@narod.ru>.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
###########################################################################
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2016 - 2021, Evgeny Grin (Karlson2k), <k2k@narod.ru>.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
368
369
370
371
372
373
374







375

376
377
378
379
380
381
382
        return normalize_path($w32drive . $path);
    }

    unless (substr($path, 0, 1) eq '/') {
        # Path is in relative form. Resolve relative directories in Unix form
        # *BEFORE* converting to Win32 form otherwise paths like
        # '../../../cygdrive/c/windows' will not be resolved.







        my $cur_dir = `pwd -L`;

        if($? != 0) {
            warn "Can't determine current working directory.\n";
            return undef;
        }
        chomp($cur_dir);

        $path = $cur_dir . '/' . $path;







>
>
>
>
>
>
>
|
>







368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
        return normalize_path($w32drive . $path);
    }

    unless (substr($path, 0, 1) eq '/') {
        # Path is in relative form. Resolve relative directories in Unix form
        # *BEFORE* converting to Win32 form otherwise paths like
        # '../../../cygdrive/c/windows' will not be resolved.

        my $cur_dir;
        # MSys shell has built-in command.
        if($^O eq 'msys') {
            $cur_dir = `bash -c 'pwd -L'`;
        }
        else {
            $cur_dir = `pwd -L`;
        }
        if($? != 0) {
            warn "Can't determine current working directory.\n";
            return undef;
        }
        chomp($cur_dir);

        $path = $cur_dir . '/' . $path;
436
437
438
439
440
441
442





443

444
445
446
447
448
449
450

        return simple_transform_win32_to_unix($path);
    }
    elsif($path eq '') {
        # Path is empty string. Return current directory.
        # Empty string processed correctly by 'cygpath'.






        chomp($path = `pwd -L`);

        if($? != 0) {
            warn "Can't determine Unix-style current working directory.\n";
            return undef;
        }

        # Add final slash if not at root dir.
        $path .= '/' if length($path) > 2;







>
>
>
>
>
|
>







444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464

        return simple_transform_win32_to_unix($path);
    }
    elsif($path eq '') {
        # Path is empty string. Return current directory.
        # Empty string processed correctly by 'cygpath'.

        # MSys shell has built-in command.
        if($^O eq 'msys') {
            chomp($path = `bash -c 'pwd -L'`);
        }
        else {
            chomp($path = `pwd -L`);
        }
        if($? != 0) {
            warn "Can't determine Unix-style current working directory.\n";
            return undef;
        }

        # Add final slash if not at root dir.
        $path .= '/' if length($path) > 2;
506
507
508
509
510
511
512







513

514
515
516
517
518
519
520
    }

    # Path is not in any Win32 form.
    unless (substr($path, 0, 1) eq '/') {
        # Path in relative form. Resolve relative directories in Unix form
        # *BEFORE* converting to Win32 form otherwise paths like
        # '../../../cygdrive/c/windows' will not be resolved.







        my $cur_dir = `pwd -L`;

        if($? != 0) {
            warn "Can't determine current working directory.\n";
            return undef;
        }
        chomp($cur_dir);

        $path = $cur_dir . '/' . $path;







>
>
>
>
>
>
>
|
>







520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
    }

    # Path is not in any Win32 form.
    unless (substr($path, 0, 1) eq '/') {
        # Path in relative form. Resolve relative directories in Unix form
        # *BEFORE* converting to Win32 form otherwise paths like
        # '../../../cygdrive/c/windows' will not be resolved.

        my $cur_dir;
        # MSys shell has built-in command.
        if($^O eq 'msys') {
            $cur_dir = `bash -c 'pwd -L'`;
        }
        else {
            $cur_dir = `pwd -L`;
        }
        if($? != 0) {
            warn "Can't determine current working directory.\n";
            return undef;
        }
        chomp($cur_dir);

        $path = $cur_dir . '/' . $path;
Changes to jni/curl/tests/runtests.1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "November 04, 2020" "Curl 7.75.0" "runtests"

.SH NAME
runtests.pl \- run one or more test cases
.SH SYNOPSIS
.B runtests.pl [options] [tests]
.SH DESCRIPTION
\fIruntests.pl\fP runs one, several or all the existing test cases in curl's







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "March 27, 2021" "Curl 7.76.0" "runtests"

.SH NAME
runtests.pl \- run one or more test cases
.SH SYNOPSIS
.B runtests.pl [options] [tests]
.SH DESCRIPTION
\fIruntests.pl\fP runs one, several or all the existing test cases in curl's
57
58
59
60
61
62
63








64
65
66
67
68
69
70
71
72
73
74
75
76
77





78
79
80
81








82
83
84
85
86
87
88
89
90
91
92
93
94
95



96
97
98
99
100
101
102
Continue running the rest of the test cases even if one test fails. By
default, the test script stops as soon as an error is detected.
.IP "-c <curl>"
Provide a path to a custom curl binary to run the tests with. Default is the
curl executable in the build tree.
.IP "-d"
Enable protocol debug: have the servers display protocol output.








.IP "-e"
Run the test event-based (if possible). This will make runtests invoke curl
with --test-event option. This option only works if both curl and libcurl were
built debug-enabled.
.IP "-g"
Run the given test(s) with gdb. This is best used on a single test case and
curl built --disable-shared. This then fires up gdb with command line set to
run the specified test case. Simply (set a break-point and) type 'run' to
start.
.IP "-h"
Displays a help text about this program's command line options.
.IP "-k"
Keep output and log files in log/ after a test run, even if no error was
detected. Useful for debugging.





.IP "-l"
Lists all test case names.
.IP "-n"
Disable the check for and use of valgrind.








.IP "-p"
Prints out all files in "log/" to stdout when a test case fails. Very
practical when used in the automated and distributed tests since then the
people checking the failures and the reasons for them might not have physical
access to the machine and logs.
.IP "-R"
Run the tests in a scrambled, or randomized, order instead of sequentially.

The random seed initially set for this is fixed per month and can be set with
\fI--seed\fP.
.IP "-r"
Display run time statistics. (Requires Perl Time::HiRes module)
.IP "-rf"
Display full run time statistics. (Requires Perl Time::HiRes module)



.IP "--repeat=[num]"
This will repeat the given set of test numbers this many times. If no test
numbers are given, it will repeat ALL tests this many times. It iteratively
adds the new sequence at the end of the initially given one.

If \fB-R\fP is also used, the scrambling is done after the repeats have
extended the test sequence.







>
>
>
>
>
>
>
>














>
>
>
>
>




>
>
>
>
>
>
>
>














>
>
>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
Continue running the rest of the test cases even if one test fails. By
default, the test script stops as soon as an error is detected.
.IP "-c <curl>"
Provide a path to a custom curl binary to run the tests with. Default is the
curl executable in the build tree.
.IP "-d"
Enable protocol debug: have the servers display protocol output.
.IP "-E <exclude_file>"
Load the \fBexclude_file\fP with additional reasons why certain tests
should be skipped. Useful when testing with external HTTP proxies in
which case some of the tests aren't appropriate.
The file contains colon-delimited lines. The first field contains the
type of exclusion, the second field contains a pattern and the final
field contains the reason why matching tests should be skipped.
The exclusion types are \fkeyword\fP, \ftest\fP, and \ftool\fP.
.IP "-e"
Run the test event-based (if possible). This will make runtests invoke curl
with --test-event option. This option only works if both curl and libcurl were
built debug-enabled.
.IP "-g"
Run the given test(s) with gdb. This is best used on a single test case and
curl built --disable-shared. This then fires up gdb with command line set to
run the specified test case. Simply (set a break-point and) type 'run' to
start.
.IP "-h"
Displays a help text about this program's command line options.
.IP "-k"
Keep output and log files in log/ after a test run, even if no error was
detected. Useful for debugging.
.IP "-L <file>"
Load and execute the specified file which should contain perl code.
This option allows to change \fIruntests.pl\fP behaviour by overwriting
functions and variables and is useful when testing external proxies
using curl's regression test suite.
.IP "-l"
Lists all test case names.
.IP "-n"
Disable the check for and use of valgrind.
.IP "-o <variablename=value>"
Overwrite the specified internal \fBvariable\fP with \fBvalue\fP.
Useful to change variables that didn't get a dedicated flag to change them.
Check the source to see which variables are available.
.IP "-P <proxy>"
Use the specified HTTP proxy when executing tests, even if the tests
themselves don't specify a proxy. This option allows to test external
proxies using curl's regression test suite.
.IP "-p"
Prints out all files in "log/" to stdout when a test case fails. Very
practical when used in the automated and distributed tests since then the
people checking the failures and the reasons for them might not have physical
access to the machine and logs.
.IP "-R"
Run the tests in a scrambled, or randomized, order instead of sequentially.

The random seed initially set for this is fixed per month and can be set with
\fI--seed\fP.
.IP "-r"
Display run time statistics. (Requires Perl Time::HiRes module)
.IP "-rf"
Display full run time statistics. (Requires Perl Time::HiRes module)
.IP "-rm"
Force removal of files by killing locking processes. (Windows only,
requires Sysinternals handle[64].exe to be on PATH)
.IP "--repeat=[num]"
This will repeat the given set of test numbers this many times. If no test
numbers are given, it will repeat ALL tests this many times. It iteratively
adds the new sequence at the end of the initially given one.

If \fB-R\fP is also used, the scrambling is done after the repeats have
extended the test sequence.
Changes to jni/curl/tests/runtests.pl.
158
159
160
161
162
163
164




165
166
167
168
169
170
171
my $HTTPPROXYPORT=$noport; # HTTP proxy port, when using CONNECT
my $HTTP2PORT=$noport;   # HTTP/2 server port
my $DICTPORT=$noport;    # DICT server port
my $SMBPORT=$noport;     # SMB server port
my $SMBSPORT=$noport;    # SMBS server port
my $TELNETPORT=$noport;  # TELNET server port with negotiation
my $HTTPUNIXPATH;        # HTTP server Unix domain socket path





my $SSHSRVMD5 = "[uninitialized]"; # MD5 of ssh server public key
my $VERSION;             # curl's reported version number

my $srcdir = $ENV{'srcdir'} || '.';
my $CURL="../src/curl".exe_ext('TOOL'); # what curl executable to run on the tests
my $VCURL=$CURL;   # what curl binary to use to verify the servers with







>
>
>
>







158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
my $HTTPPROXYPORT=$noport; # HTTP proxy port, when using CONNECT
my $HTTP2PORT=$noport;   # HTTP/2 server port
my $DICTPORT=$noport;    # DICT server port
my $SMBPORT=$noport;     # SMB server port
my $SMBSPORT=$noport;    # SMBS server port
my $TELNETPORT=$noport;  # TELNET server port with negotiation
my $HTTPUNIXPATH;        # HTTP server Unix domain socket path

my $use_external_proxy = 0;
my $proxy_address;
my %custom_skip_reasons;

my $SSHSRVMD5 = "[uninitialized]"; # MD5 of ssh server public key
my $VERSION;             # curl's reported version number

my $srcdir = $ENV{'srcdir'} || '.';
my $CURL="../src/curl".exe_ext('TOOL'); # what curl executable to run on the tests
my $VCURL=$CURL;   # what curl binary to use to verify the servers with
260
261
262
263
264
265
266

267
268
269
270
271
272
273
my $has_hsts;       # set if libcurl is built with HSTS support
my $has_ldpreload;  # set if built for systems supporting LD_PRELOAD
my $has_multissl;   # set if build with MultiSSL support
my $has_manual;     # set if built with built-in manual
my $has_win32;      # set if built for Windows
my $has_mingw;      # set if built with MinGW (as opposed to MinGW-w64)
my $has_hyper = 0;  # set if built with Hyper


# this version is decided by the particular nghttp2 library that is being used
my $h2cver = "h2c";

my $has_openssl;    # built with a lib using an OpenSSL-like API
my $has_gnutls;     # built with GnuTLS
my $has_nss;        # built with NSS







>







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
my $has_hsts;       # set if libcurl is built with HSTS support
my $has_ldpreload;  # set if built for systems supporting LD_PRELOAD
my $has_multissl;   # set if build with MultiSSL support
my $has_manual;     # set if built with built-in manual
my $has_win32;      # set if built for Windows
my $has_mingw;      # set if built with MinGW (as opposed to MinGW-w64)
my $has_hyper = 0;  # set if built with Hyper
my $has_unicode;    # set if libcurl is built with Unicode support

# this version is decided by the particular nghttp2 library that is being used
my $h2cver = "h2c";

my $has_openssl;    # built with a lib using an OpenSSL-like API
my $has_gnutls;     # built with GnuTLS
my $has_nss;        # built with NSS
329
330
331
332
333
334
335

336
337
338
339
340
341
342
my $automakestyle;
my $verbose;
my $debugprotocol;
my $anyway;
my $gdbthis;      # run test case with gdb debugger
my $gdbxwin;      # use windowed gdb when using gdb
my $keepoutfiles; # keep stdout and stderr files after tests

my $listonly;     # only list the tests
my $postmortem;   # display detailed info about failed tests
my $run_event_based; # run curl with --test-event to test the event API

my %run;          # running server
my %doesntrun;    # servers that don't work, identified by pidfile
my %serverpidfile;# all server pid file names, identified by server id







>







334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
my $automakestyle;
my $verbose;
my $debugprotocol;
my $anyway;
my $gdbthis;      # run test case with gdb debugger
my $gdbxwin;      # use windowed gdb when using gdb
my $keepoutfiles; # keep stdout and stderr files after tests
my $clearlocks;   # force removal of files by killing locking processes
my $listonly;     # only list the tests
my $postmortem;   # display detailed info about failed tests
my $run_event_based; # run curl with --test-event to test the event API

my %run;          # running server
my %doesntrun;    # servers that don't work, identified by pidfile
my %serverpidfile;# all server pid file names, identified by server id
379
380
381
382
383
384
385


386
387
388
389
390
391
392

# enable memory debugging if curl is compiled with it
$ENV{'CURL_MEMDEBUG'} = $memdump;
$ENV{'CURL_ENTROPY'}="12345678";
$ENV{'CURL_FORCETIME'}=1; # for debug NTLM magic
$ENV{'CURL_GLOBAL_INIT'}=1; # debug curl_global_init/cleanup use
$ENV{'HOME'}=$pwd;


$ENV{'COLUMNS'}=79; # screen width!

sub catch_zap {
    my $signame = shift;
    logmsg "runtests.pl received SIG$signame, exiting\n";
    stopservers($verbose);
    die "Somebody sent me a SIG$signame";







>
>







385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400

# enable memory debugging if curl is compiled with it
$ENV{'CURL_MEMDEBUG'} = $memdump;
$ENV{'CURL_ENTROPY'}="12345678";
$ENV{'CURL_FORCETIME'}=1; # for debug NTLM magic
$ENV{'CURL_GLOBAL_INIT'}=1; # debug curl_global_init/cleanup use
$ENV{'HOME'}=$pwd;
$ENV{'CURL_HOME'}=$ENV{'HOME'};
$ENV{'XDG_CONFIG_HOME'}=$ENV{'HOME'};
$ENV{'COLUMNS'}=79; # screen width!

sub catch_zap {
    my $signame = shift;
    logmsg "runtests.pl received SIG$signame, exiting\n";
    stopservers($verbose);
    die "Somebody sent me a SIG$signame";
835
836
837
838
839
840
841







842
843
844
845
846
847
848
        if($pid > 0) {
            logmsg "Warning: $server server unexpectedly alive\n";
            killpid($verbose, $pid);
        }
        unlink($pidfile) if(-f $pidfile);
    }
}








#######################################################################
# Verify that the server that runs on $ip, $port is our server.  This also
# implies that we can speak with it, as there might be occasions when the
# server runs fine but we cannot talk to it ("Failed to connect to ::1: Can't
# assign requested address")
#







>
>
>
>
>
>
>







843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
        if($pid > 0) {
            logmsg "Warning: $server server unexpectedly alive\n";
            killpid($verbose, $pid);
        }
        unlink($pidfile) if(-f $pidfile);
    }
}

#######################################################################
# Return flags to let curl use an external HTTP proxy
#
sub getexternalproxyflags {
    return " --proxy $proxy_address ";
}

#######################################################################
# Verify that the server that runs on $ip, $port is our server.  This also
# implies that we can speak with it, as there might be occasions when the
# server runs fine but we cannot talk to it ("Failed to connect to ::1: Can't
# assign requested address")
#
870
871
872
873
874
875
876



877
878
879
880
881
882
883
    my $flags = "--max-time $server_response_maxtime ";
    $flags .= "--output $verifyout ";
    $flags .= "--silent ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";
    $flags .= "--unix-socket '$port_or_path' " if $ipvnum eq "unix";
    $flags .= "--insecure " if($proto eq 'https');



    $flags .= "\"$proto://$ip:$port/${bonus}verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # verify if our/any server is running on this port
    logmsg "RUN: $cmd\n" if($verbose);
    my $res = runclient($cmd);







>
>
>







885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
    my $flags = "--max-time $server_response_maxtime ";
    $flags .= "--output $verifyout ";
    $flags .= "--silent ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";
    $flags .= "--unix-socket '$port_or_path' " if $ipvnum eq "unix";
    $flags .= "--insecure " if($proto eq 'https');
    if($use_external_proxy) {
        $flags .= getexternalproxyflags();
    }
    $flags .= "\"$proto://$ip:$port/${bonus}verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # verify if our/any server is running on this port
    logmsg "RUN: $cmd\n" if($verbose);
    my $res = runclient($cmd);
944
945
946
947
948
949
950



951
952
953
954
955
956
957
    }

    my $flags = "--max-time $server_response_maxtime ";
    $flags .= "--silent ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";
    $flags .= $extra;



    $flags .= "\"$proto://$ip:$port/verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # check if this is our server running on this port:
    logmsg "RUN: $cmd\n" if($verbose);
    my @data = runclientoutput($cmd);







>
>
>







962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
    }

    my $flags = "--max-time $server_response_maxtime ";
    $flags .= "--silent ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";
    $flags .= $extra;
    if($use_external_proxy) {
        $flags .= getexternalproxyflags();
    }
    $flags .= "\"$proto://$ip:$port/verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # check if this is our server running on this port:
    logmsg "RUN: $cmd\n" if($verbose);
    my @data = runclientoutput($cmd);
1006
1007
1008
1009
1010
1011
1012



1013
1014
1015
1016
1017
1018
1019
    unlink($verifylog) if(-f $verifylog);

    my $flags = "--max-time $server_response_maxtime ";
    $flags .= "--output $verifyout ";
    $flags .= "--silent ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";



    # currently verification is done using http
    $flags .= "\"http://$ip:$port/verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # verify if our/any server is running on this port
    logmsg "RUN: $cmd\n" if($verbose);







>
>
>







1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
    unlink($verifylog) if(-f $verifylog);

    my $flags = "--max-time $server_response_maxtime ";
    $flags .= "--output $verifyout ";
    $flags .= "--silent ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";
    if($use_external_proxy) {
        $flags .= getexternalproxyflags();
    }
    # currently verification is done using http
    $flags .= "\"http://$ip:$port/verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # verify if our/any server is running on this port
    logmsg "RUN: $cmd\n" if($verbose);
1147
1148
1149
1150
1151
1152
1153



1154
1155
1156
1157
1158
1159
1160
    $flags .= "--output $verifyout ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";
    $flags .= "--insecure ";
    $flags .= "--tlsauthtype SRP ";
    $flags .= "--tlsuser jsmith ";
    $flags .= "--tlspassword abc ";



    $flags .= "\"https://$ip:$port/verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # verify if our/any server is running on this port
    logmsg "RUN: $cmd\n" if($verbose);
    my $res = runclient($cmd);







>
>
>







1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
    $flags .= "--output $verifyout ";
    $flags .= "--verbose ";
    $flags .= "--globoff ";
    $flags .= "--insecure ";
    $flags .= "--tlsauthtype SRP ";
    $flags .= "--tlsuser jsmith ";
    $flags .= "--tlspassword abc ";
    if($use_external_proxy) {
        $flags .= getexternalproxyflags();
    }
    $flags .= "\"https://$ip:$port/verifiedserver\"";

    my $cmd = "$VCURL $flags 2>$verifylog";

    # verify if our/any server is running on this port
    logmsg "RUN: $cmd\n" if($verbose);
    my $res = runclient($cmd);
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
    $flags .= "--portfile $portfile ";
    $flags .= "--id $idnum " if($idnum > 1);
    if($ipvnum eq "unix") {
        $flags .= "--unix-socket '$port_or_path' ";
    } else {
        $flags .= "--ipv$ipvnum --port 0 ";
    }
    $flags .= "--srcdir \"$srcdir\"";

    my $cmd = "$exe $flags";
    my ($httppid, $pid2) = startnew($cmd, $pidfile, 15, 0);

    if($httppid <= 0 || !pidexists($httppid)) {
        # it is NOT alive
        logmsg "RUN: failed to start the $srvrname server\n";







|







1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
    $flags .= "--portfile $portfile ";
    $flags .= "--id $idnum " if($idnum > 1);
    if($ipvnum eq "unix") {
        $flags .= "--unix-socket '$port_or_path' ";
    } else {
        $flags .= "--ipv$ipvnum --port 0 ";
    }
    $flags .= "--srcdir \"$TESTDIR/..\"";

    my $cmd = "$exe $flags";
    my ($httppid, $pid2) = startnew($cmd, $pidfile, 15, 0);

    if($httppid <= 0 || !pidexists($httppid)) {
        # it is NOT alive
        logmsg "RUN: failed to start the $srvrname server\n";
2706
2707
2708
2709
2710
2711
2712






























2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728


2729

2730

2731

2732

2733
2734

2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
    my $port = ($ipv6 && ($ipv6 =~ /6$/)) ? $HTTPTLS6PORT : $HTTPTLSPORT;
    my $ip = ($ipv6 && ($ipv6 =~ /6$/)) ? "$HOST6IP" : "$HOSTIP";
    my $ipvnum = ($ipv6 && ($ipv6 =~ /6$/)) ? 6 : 4;
    my $idnum = 1;

    return &responsiveserver($proto, $ipvnum, $idnum, $ip, $port);
}































#######################################################################
# Remove all files in the specified directory
#
sub cleardir {
    my $dir = $_[0];
    my $count;
    my $file;

    # Get all files
    opendir(my $dh, $dir) ||
        return 0; # can't open dir
    while($file = readdir($dh)) {
        if(($file !~ /^(\.|\.\.)\z/)) {
            if(-d "$dir/$file") {
                cleardir("$dir/$file");


                rmdir("$dir/$file");

            }

            else {

                unlink("$dir/$file");

            }
            $count++;

        }
    }
    closedir $dh;
    return $count;
}

#######################################################################
# compare test results with the expected output, we might filter off
# some pattern that is allowed to differ, output test results
#
sub compare {







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






|








|
>
>
|
>
|
>

>
|
>
|
<
>



|







2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796

2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
    my $port = ($ipv6 && ($ipv6 =~ /6$/)) ? $HTTPTLS6PORT : $HTTPTLSPORT;
    my $ip = ($ipv6 && ($ipv6 =~ /6$/)) ? "$HOST6IP" : "$HOSTIP";
    my $ipvnum = ($ipv6 && ($ipv6 =~ /6$/)) ? 6 : 4;
    my $idnum = 1;

    return &responsiveserver($proto, $ipvnum, $idnum, $ip, $port);
}

#######################################################################
# Kill the processes that still lock files in a directory
#
sub clearlocks {
    my $dir = $_[0];
    my $done = 0;

    if(pathhelp::os_is_win()) {
        $dir = pathhelp::sys_native_abs_path($dir);
        $dir =~ s/\//\\\\/g;
        my $handle = "handle.exe";
        if($ENV{"PROCESSOR_ARCHITECTURE"} =~ /64$/) {
            $handle = "handle64.exe";
        }
        my @handles = `$handle $dir -accepteula -nobanner`;
        for $handle (@handles) {
            if($handle =~ /^(\S+)\s+pid:\s+(\d+)\s+type:\s+(\w+)\s+([0-9A-F]+):\s+(.+)\r\r/) {
                logmsg "Found $3 lock of '$5' ($4) by $1 ($2)\n";
                # Ignore stunnel since we cannot do anything about its locks
                if("$3" eq "File" && "$1" ne "tstunnel.exe") {
                    logmsg "Killing IMAGENAME eq $1 and PID eq $2\n";
                    system("taskkill.exe -f -fi \"IMAGENAME eq $1\" -fi \"PID eq $2\" >nul 2>&1");
                    $done = 1;
                }
            }
        }
    }
    return $done;
}

#######################################################################
# Remove all files in the specified directory
#
sub cleardir {
    my $dir = $_[0];
    my $done = 1;
    my $file;

    # Get all files
    opendir(my $dh, $dir) ||
        return 0; # can't open dir
    while($file = readdir($dh)) {
        if(($file !~ /^(\.|\.\.)\z/)) {
            if(-d "$dir/$file") {
                if(!cleardir("$dir/$file")) {
                    $done = 0;
                }
                if(!rmdir("$dir/$file")) {
                    $done = 0;
                }
            }
            else {
                # Ignore stunnel since we cannot do anything about its locks
                if(!unlink("$dir/$file") && "$file" !~ /_stunnel\.log$/) {
                    $done = 0;
                }

            }
        }
    }
    closedir $dh;
    return $done;
}

#######################################################################
# compare test results with the expected output, we might filter off
# some pattern that is allowed to differ, output test results
#
sub compare {
2799
2800
2801
2802
2803
2804
2805

2806
2807
2808
2809
2810
2811
2812
    $feature{"SPNEGO"} = $has_spnego;
    $feature{"SSL"} = $has_ssl;
    $feature{"SSLpinning"} = $has_sslpinning;
    $feature{"SSPI"} = $has_sspi;
    $feature{"threaded-resolver"} = $has_threadedres;
    $feature{"TLS-SRP"} = $has_tls_srp;
    $feature{"TrackMemory"} = $has_memory_tracking;

    $feature{"unittest"} = $debug_build;
    $feature{"unix-sockets"} = $has_unix;
    $feature{"win32"} = $has_win32;
    $feature{"zstd"} = $has_zstd;

    # make each protocol an enabled "feature"
    for my $p (@protocols) {







>







2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
    $feature{"SPNEGO"} = $has_spnego;
    $feature{"SSL"} = $has_ssl;
    $feature{"SSLpinning"} = $has_sslpinning;
    $feature{"SSPI"} = $has_sspi;
    $feature{"threaded-resolver"} = $has_threadedres;
    $feature{"TLS-SRP"} = $has_tls_srp;
    $feature{"TrackMemory"} = $has_memory_tracking;
    $feature{"Unicode"} = $has_unicode;
    $feature{"unittest"} = $debug_build;
    $feature{"unix-sockets"} = $has_unix;
    $feature{"win32"} = $has_win32;
    $feature{"zstd"} = $has_zstd;

    # make each protocol an enabled "feature"
    for my $p (@protocols) {
3066
3067
3068
3069
3070
3071
3072



3073
3074
3075
3076
3077
3078
3079
            }
            if($feat =~ /HTTPS-proxy/) {
                $has_httpsproxy=1;

                # 'https-proxy' is used as "server" so consider it a protocol
                push @protocols, 'https-proxy';
            }



        }
        #
        # Test harness currently uses a non-stunnel server in order to
        # run HTTP TLS-SRP tests required when curl is built with https
        # protocol support and TLS-SRP feature enabled. For convenience
        # 'httptls' may be included in the test harness protocols array
        # to differentiate this from classic stunnel based 'https' test







>
>
>







3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
            }
            if($feat =~ /HTTPS-proxy/) {
                $has_httpsproxy=1;

                # 'https-proxy' is used as "server" so consider it a protocol
                push @protocols, 'https-proxy';
            }
            if($feat =~ /Unicode/i) {
                $has_unicode = 1;
            }
        }
        #
        # Test harness currently uses a non-stunnel server in order to
        # run HTTP TLS-SRP tests required when curl is built with https
        # protocol support and TLS-SRP feature enabled. For convenience
        # 'httptls' may be included in the test harness protocols array
        # to differentiate this from classic stunnel based 'https' test
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
}

#######################################################################
# substitute the variable stuff into either a joined up file or
# a command, in either case passed by reference
#
sub subVariables {
    my ($thing, $prefix) = @_;

    if(!$prefix) {
        $prefix = "%";
    }

    # test server ports
    $$thing =~ s/${prefix}FTP6PORT/$FTP6PORT/g;







|







3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
}

#######################################################################
# substitute the variable stuff into either a joined up file or
# a command, in either case passed by reference
#
sub subVariables {
    my ($thing, $testnum, $prefix) = @_;

    if(!$prefix) {
        $prefix = "%";
    }

    # test server ports
    $$thing =~ s/${prefix}FTP6PORT/$FTP6PORT/g;
3277
3278
3279
3280
3281
3282
3283

3284
3285
3286
3287
3288
3289
3290
    $$thing =~ s/${prefix}HOSTIP/$HOSTIP/g;

    # misc
    $$thing =~ s/${prefix}CURL/$CURL/g;
    $$thing =~ s/${prefix}PWD/$pwd/g;
    $$thing =~ s/${prefix}POSIX_PWD/$posix_pwd/g;
    $$thing =~ s/${prefix}VERSION/$VERSION/g;


    my $file_pwd = $pwd;
    if($file_pwd !~ /^\//) {
        $file_pwd = "/$file_pwd";
    }
    my $ssh_pwd = $posix_pwd;
    if ($sshdid && $sshdid =~ /OpenSSH-Windows/) {







>







3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
    $$thing =~ s/${prefix}HOSTIP/$HOSTIP/g;

    # misc
    $$thing =~ s/${prefix}CURL/$CURL/g;
    $$thing =~ s/${prefix}PWD/$pwd/g;
    $$thing =~ s/${prefix}POSIX_PWD/$posix_pwd/g;
    $$thing =~ s/${prefix}VERSION/$VERSION/g;
    $$thing =~ s/${prefix}TESTNUMBER/$testnum/g;

    my $file_pwd = $pwd;
    if($file_pwd !~ /^\//) {
        $file_pwd = "/$file_pwd";
    }
    my $ssh_pwd = $posix_pwd;
    if ($sshdid && $sshdid =~ /OpenSSH-Windows/) {
3420
3421
3422
3423
3424
3425
3426

3427
3428
3429
3430
3431
3432
3433
}

#
# 'prepro' processes the input array and replaces %-variables in the array
# etc. Returns the processed version of the array

sub prepro {

    my (@entiretest) = @_;
    my $show = 1;
    my @out;
    for my $s (@entiretest) {
        my $f = $s;
        if($s =~ /^ *%if (.*)/) {
            my $cond = $1;







>







3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
}

#
# 'prepro' processes the input array and replaces %-variables in the array
# etc. Returns the processed version of the array

sub prepro {
    my $testnum = shift;
    my (@entiretest) = @_;
    my $show = 1;
    my @out;
    for my $s (@entiretest) {
        my $f = $s;
        if($s =~ /^ *%if (.*)/) {
            my $cond = $1;
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
            next;
        }
        elsif($s =~ /^ *%endif/) {
            $show = 1;
            next;
        }
        if($show) {
            subVariables(\$s, "%");
            subBase64(\$s);
            subNewlines(\$s) if($has_hyper);
            push @out, $s;
        }
    }
    return @out;
}







|







3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
            next;
        }
        elsif($s =~ /^ *%endif/) {
            $show = 1;
            next;
        }
        if($show) {
            subVariables(\$s, $testnum, "%");
            subBase64(\$s);
            subNewlines(\$s) if($has_hyper);
            push @out, $s;
        }
    }
    return @out;
}
3472
3473
3474
3475
3476
3477
3478


3479

3480
3481
3482
3483
3484
3485
3486
    my @what;
    my $why;
    my $cmd;
    my $disablevalgrind;
    my $errorreturncode = 1; # 1 means normal error, 2 means ignored error

    # fist, remove all lingering log files


    cleardir($LOGDIR);


    # copy test number to a global scope var, this allows
    # testnum checking when starting test harness servers.
    $testnumcheck = $testnum;

    # timestamp test preparation start
    $timeprepini{$testnum} = Time::HiRes::time();







>
>
|
>







3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
    my @what;
    my $why;
    my $cmd;
    my $disablevalgrind;
    my $errorreturncode = 1; # 1 means normal error, 2 means ignored error

    # fist, remove all lingering log files
    if(!cleardir($LOGDIR) && $clearlocks) {
        clearlocks($LOGDIR);
        cleardir($LOGDIR);
    }

    # copy test number to a global scope var, this allows
    # testnum checking when starting test harness servers.
    $testnumcheck = $testnum;

    # timestamp test preparation start
    $timeprepini{$testnum} = Time::HiRes::time();
3570
3571
3572
3573
3574
3575
3576

























3577
3578
3579
3580
3581
3582
3583
            $keywords{$k} = 1;
        }

        if(!$why && !$match && %enabled_keywords) {
            $why = "disabled by missing keyword";
        }
    }


























    # test definition may instruct to (un)set environment vars
    # this is done this early, so that the precheck can use environment
    # variables and still bail out fine on errors

    # restore environment variables that were modified in a previous run
    foreach my $var (keys %oldenv) {







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
            $keywords{$k} = 1;
        }

        if(!$why && !$match && %enabled_keywords) {
            $why = "disabled by missing keyword";
        }
    }

    if (!$why && defined $custom_skip_reasons{test}{$testnum}) {
        $why = $custom_skip_reasons{test}{$testnum};
    }

    if (!$why && defined $custom_skip_reasons{tool}) {
        foreach my $tool (getpart("client", "tool")) {
            foreach my $tool_skip_pattern (keys %{$custom_skip_reasons{tool}}) {
                if ($tool =~ /$tool_skip_pattern/i) {
                    $why = $custom_skip_reasons{tool}{$tool_skip_pattern};
                }
            }
        }
    }

    if (!$why && defined $custom_skip_reasons{keyword}) {
        foreach my $keyword (getpart("info", "keywords")) {
            foreach my $keyword_skip_pattern (keys %{$custom_skip_reasons{keyword}}) {
                if ($keyword =~ /$keyword_skip_pattern/i) {
                    $why = $custom_skip_reasons{keyword}{$keyword_skip_pattern};
                }
            }
        }
    }


    # test definition may instruct to (un)set environment vars
    # this is done this early, so that the precheck can use environment
    # variables and still bail out fine on errors

    # restore environment variables that were modified in a previous run
    foreach my $var (keys %oldenv) {
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
    }

    # Save a preprocessed version of the entire test file. This allows more
    # "basic" test case readers to enjoy variable replacements.
    my @entiretest = fulltest();
    my $otest = "log/test$testnum";

    @entiretest = prepro(@entiretest);

    # save the new version
    open(D, ">$otest");
    print D @entiretest;
    close(D);

    # in case the process changed the file, reload it







|







3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
    }

    # Save a preprocessed version of the entire test file. This allows more
    # "basic" test case readers to enjoy variable replacements.
    my @entiretest = fulltest();
    my $otest = "log/test$testnum";

    @entiretest = prepro($testnum, @entiretest);

    # save the new version
    open(D, ">$otest");
    print D @entiretest;
    close(D);

    # in case the process changed the file, reload it
3656
3657
3658
3659
3660
3661
3662




3663
3664
3665
3666
3667
3668
3669
                    }
                    $ENV{$var} = "$content";
                    print "setenv $var = $content\n" if($verbose);
                }
            }
        }
    }





    if(!$why) {
        my @precheck = getpart("client", "precheck");
        if(@precheck) {
            $cmd = $precheck[0];
            chomp $cmd;
            if($cmd) {







>
>
>
>







3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
                    }
                    $ENV{$var} = "$content";
                    print "setenv $var = $content\n" if($verbose);
                }
            }
        }
    }
    if($use_external_proxy) {
        $ENV{http_proxy} = $proxy_address;
        $ENV{HTTPS_PROXY} = $proxy_address;
    }

    if(!$why) {
        my @precheck = getpart("client", "precheck");
        if(@precheck) {
            $cmd = $precheck[0];
            chomp $cmd;
            if($cmd) {
3902
3903
3904
3905
3906
3907
3908



3909
3910
3911
3912
3913
3914
3915
        }
        $cmdargs .= "--trace-time ";
        if($evbased) {
            $cmdargs .= "--test-event ";
            $fail_due_event_based--;
        }
        $cmdargs .= $cmd;



    }
    else {
        $cmdargs = " $cmd"; # $cmd is the command line for the test file
        $CURLOUT = $STDOUT; # sends received data to stdout

        # Default the tool to a unit test with the same name as the test spec
        if($keywords{"unittest"} && !$tool) {







>
>
>







4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
        }
        $cmdargs .= "--trace-time ";
        if($evbased) {
            $cmdargs .= "--test-event ";
            $fail_due_event_based--;
        }
        $cmdargs .= $cmd;
        if ($use_external_proxy) {
            $cmdargs .= " --proxy $proxy_address ";
        }
    }
    else {
        $cmdargs = " $cmd"; # $cmd is the command line for the test file
        $CURLOUT = $STDOUT; # sends received data to stdout

        # Default the tool to a unit test with the same name as the test spec
        if($keywords{"unittest"} && !$tool) {
5294
5295
5296
5297
5298
5299
5300






















5301
5302
5303
5304
5305
5306
5307
    elsif ($ARGV[0] eq "-d") {
        # have the servers display protocol output
        $debugprotocol=1;
    }
    elsif($ARGV[0] eq "-e") {
        # run the tests cases event based if possible
        $run_event_based=1;






















    }
    elsif ($ARGV[0] eq "-g") {
        # run this test with gdb
        $gdbthis=1;
    }
    elsif ($ARGV[0] eq "-gw") {
        # run this test with windowed gdb







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
    elsif ($ARGV[0] eq "-d") {
        # have the servers display protocol output
        $debugprotocol=1;
    }
    elsif($ARGV[0] eq "-e") {
        # run the tests cases event based if possible
        $run_event_based=1;
    }
    elsif($ARGV[0] eq "-E") {
        # load additional reasons to skip tests
        shift @ARGV;
        my $exclude_file = $ARGV[0];
        open(my $fd, "<", $exclude_file) or die "Couldn't open '$exclude_file': $!";
        while(my $line = <$fd>) {
            next if ($line =~ /^#/);
            chomp $line;
            my ($type, $patterns, $skip_reason) = split(/\s*:\s*/, $line, 3);

            die "Unsupported type: $type\n" if($type !~ /^keyword|test|tool$/);

            foreach my $pattern (split(/,/, $patterns)) {
                if($type =~ /^test$/) {
                    # Strip leading zeros in the test number
                    $pattern = int($pattern);
                }
                $custom_skip_reasons{$type}{$pattern} = $skip_reason;
            }
        }
        close($fd);
    }
    elsif ($ARGV[0] eq "-g") {
        # run this test with gdb
        $gdbthis=1;
    }
    elsif ($ARGV[0] eq "-gw") {
        # run this test with windowed gdb
5347
5348
5349
5350
5351
5352
5353









5354
5355
5356










5357
5358
5359
5360
5361
5362
5363
    elsif($ARGV[0] =~ /--seed=(\d+)/) {
        # Set a fixed random seed (used for -R and --shallow)
        $randseed = $1;
    }
    elsif($ARGV[0] eq "-a") {
        # continue anyway, even if a test fail
        $anyway=1;









    }
    elsif($ARGV[0] eq "-p") {
        $postmortem=1;










    }
    elsif($ARGV[0] eq "-l") {
        # lists the test case names only
        $listonly=1;
    }
    elsif($ARGV[0] eq "-k") {
        # keep stdout and stderr files after tests







>
>
>
>
>
>
>
>
>



>
>
>
>
>
>
>
>
>
>







5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
    elsif($ARGV[0] =~ /--seed=(\d+)/) {
        # Set a fixed random seed (used for -R and --shallow)
        $randseed = $1;
    }
    elsif($ARGV[0] eq "-a") {
        # continue anyway, even if a test fail
        $anyway=1;
    }
    elsif($ARGV[0] eq "-o") {
        shift @ARGV;
        if ($ARGV[0] =~ /^(\w+)=([\w.:\/\[\]-]+)$/) {
            my ($variable, $value) = ($1, $2);
            eval "\$$variable='$value'" or die "Failed to set \$$variable to $value: $@";
        } else {
            die "Failed to parse '-o $ARGV[0]'. May contain unexpected characters.\n";
        }
    }
    elsif($ARGV[0] eq "-p") {
        $postmortem=1;
    }
    elsif($ARGV[0] eq "-P") {
        shift @ARGV;
        $use_external_proxy=1;
        $proxy_address=$ARGV[0];
    }
    elsif($ARGV[0] eq "-L") {
        # require additional library file
        shift @ARGV;
        require $ARGV[0];
    }
    elsif($ARGV[0] eq "-l") {
        # lists the test case names only
        $listonly=1;
    }
    elsif($ARGV[0] eq "-k") {
        # keep stdout and stderr files after tests
5386
5387
5388
5389
5390
5391
5392




5393
5394
5395
5396
5397
5398
5399
5400
5401
5402

5403
5404
5405
5406

5407
5408


5409
5410
5411
5412

5413
5414
5415
5416
5417
5418
5419
            keys(%timetoolini) = 1000;
            keys(%timetoolend) = 1000;
            keys(%timesrvrlog) = 1000;
            keys(%timevrfyend) = 1000;
            $timestats=1;
            $fullstats=1;
        }




    }
    elsif(($ARGV[0] eq "-h") || ($ARGV[0] eq "--help")) {
        # show help text
        print <<EOHELP
Usage: runtests.pl [options] [test selection(s)]
  -a       continue even if a test fails
  -am      automake style output PASS/FAIL: [number] [name]
  -c path  use this curl executable
  -d       display server debug info
  -e       event-based execution

  -g       run the test case with gdb
  -gw      run the test case with gdb as a windowed application
  -h       this help text
  -k       keep stdout and stderr files present after tests

  -l       list all test case names/descriptions
  -n       no valgrind


  -p       print log file contents when a test fails
  -R       scrambled order (uses the random seed, see --seed)
  -r       run time statistics
  -rf      full run time statistics

  -s       short output
  --seed=[num] set the random seed to a fixed number
  --shallow=[num] randomly makes the torture tests "thinner"
  -t[N]    torture (simulate function failures); N means fail Nth function
  -v       verbose output
  -vc path use this curl only to verify the existing servers
  [num]    like "5 6 9" or " 5 to 22 " to run those tests only







>
>
>
>










>




>


>
>




>







5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
            keys(%timetoolini) = 1000;
            keys(%timetoolend) = 1000;
            keys(%timesrvrlog) = 1000;
            keys(%timevrfyend) = 1000;
            $timestats=1;
            $fullstats=1;
        }
    }
    elsif($ARGV[0] eq "-rm") {
        # force removal of files by killing locking processes
        $clearlocks=1;
    }
    elsif(($ARGV[0] eq "-h") || ($ARGV[0] eq "--help")) {
        # show help text
        print <<EOHELP
Usage: runtests.pl [options] [test selection(s)]
  -a       continue even if a test fails
  -am      automake style output PASS/FAIL: [number] [name]
  -c path  use this curl executable
  -d       display server debug info
  -e       event-based execution
  -E file  load the specified file to exclude certain tests
  -g       run the test case with gdb
  -gw      run the test case with gdb as a windowed application
  -h       this help text
  -k       keep stdout and stderr files present after tests
  -L path  require an additional perl library file to replace certain functions
  -l       list all test case names/descriptions
  -n       no valgrind
  -o variable=value set internal variable to the specified value
  -P proxy use the specified proxy
  -p       print log file contents when a test fails
  -R       scrambled order (uses the random seed, see --seed)
  -r       run time statistics
  -rf      full run time statistics
  -rm      force removal of files by killing locking processes (Windows only)
  -s       short output
  --seed=[num] set the random seed to a fixed number
  --shallow=[num] randomly makes the torture tests "thinner"
  -t[N]    torture (simulate function failures); N means fail Nth function
  -v       verbose output
  -vc path use this curl only to verify the existing servers
  [num]    like "5 6 9" or " 5 to 22 " to run those tests only
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
            }
            push @input, $_;
        }
        close(D);

        # preprocess the input to make conditionally disabled tests depending
        # on variables
        my @pp = prepro(@input);
        for my $t (@pp) {
            if($t =~ /(\d+)/) {
                my ($n) = $1;
                $disabled{$n}=$n; # disable this test number
                if(! -f "$srcdir/data/test$n") {
                    print STDERR "WARNING! Non-existing test $n in $file!\n";
                    # fail hard to make user notice







|







5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
            }
            push @input, $_;
        }
        close(D);

        # preprocess the input to make conditionally disabled tests depending
        # on variables
        my @pp = prepro(0, @input);
        for my $t (@pp) {
            if($t =~ /(\d+)/) {
                my ($n) = $1;
                $disabled{$n}=$n; # disable this test number
                if(! -f "$srcdir/data/test$n") {
                    print STDERR "WARNING! Non-existing test $n in $file!\n";
                    # fail hard to make user notice
5862
5863
5864
5865
5866
5867
5868











































5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925

# Tests done, stop the servers
stopservers($verbose);

my $all = $total + $skipped;

runtimestats($lasttest);












































if($total) {
    logmsg sprintf("TESTDONE: $ok tests out of $total reported OK: %d%%\n",
                   $ok/$total*100);

    if($ok != $total) {
        logmsg "\nTESTFAIL: These test cases failed: $failed\n\n";
    }
}
else {
    logmsg "\nTESTFAIL: No tests were performed\n\n";
    if(scalar(keys %enabled_keywords)) {
        logmsg "TESTFAIL: Nothing matched these keywords: ";
        for(keys %enabled_keywords) {
            logmsg "$_ ";
        }
        logmsg "\n";
    }
}

if($all) {
    logmsg "TESTDONE: $all tests were considered during ".
        sprintf("%.0f", $sofar) ." seconds.\n";
}

if($skipped && !$short) {
    my $s=0;
    logmsg "TESTINFO: $skipped tests were skipped due to these restraints:\n";

    for(keys %skipped) {
        my $r = $_;
        printf "TESTINFO: \"%s\" %d times (", $r, $skipped{$_};

        # now show all test case numbers that had this reason for being
        # skipped
        my $c=0;
        my $max = 9;
        for(0 .. scalar @teststat) {
            my $t = $_;
            if($teststat[$_] && ($teststat[$_] eq $r)) {
                if($c < $max) {
                    logmsg ", " if($c);
                    logmsg $_;
                }
                $c++;
            }
        }
        if($c > $max) {
            logmsg " and ".($c-$max)." more";
        }
        logmsg ")\n";
    }
}

if(($total && (($ok+$ign) != $total)) || !$total) {
    exit 1;
}







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




















<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<



6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085


































6086
6087
6088

# Tests done, stop the servers
stopservers($verbose);

my $all = $total + $skipped;

runtimestats($lasttest);

if($all) {
    logmsg "TESTDONE: $all tests were considered during ".
        sprintf("%.0f", $sofar) ." seconds.\n";
}

if($skipped && !$short) {
    my $s=0;
    # Temporary hash to print the restraints sorted by the number
    # of their occurences
    my %restraints;
    logmsg "TESTINFO: $skipped tests were skipped due to these restraints:\n";

    for(keys %skipped) {
        my $r = $_;
        my $skip_count = $skipped{$r};
        my $log_line = sprintf("TESTINFO: \"%s\" %d time%s (", $r, $skip_count,
                           ($skip_count == 1) ? "" : "s");

        # now gather all test case numbers that had this reason for being
        # skipped
        my $c=0;
        my $max = 9;
        for(0 .. scalar @teststat) {
            my $t = $_;
            if($teststat[$t] && ($teststat[$t] eq $r)) {
                if($c < $max) {
                    $log_line .= ", " if($c);
                    $log_line .= $t;
                }
                $c++;
            }
        }
        if($c > $max) {
            $log_line .= " and ".($c-$max)." more";
        }
        $log_line .= ")\n";
        $restraints{$log_line} = $skip_count;
    }
    foreach my $log_line (sort {$restraints{$b} <=> $restraints{$a}} keys %restraints) {
        logmsg $log_line;
    }
}

if($total) {
    logmsg sprintf("TESTDONE: $ok tests out of $total reported OK: %d%%\n",
                   $ok/$total*100);

    if($ok != $total) {
        logmsg "\nTESTFAIL: These test cases failed: $failed\n\n";
    }
}
else {
    logmsg "\nTESTFAIL: No tests were performed\n\n";
    if(scalar(keys %enabled_keywords)) {
        logmsg "TESTFAIL: Nothing matched these keywords: ";
        for(keys %enabled_keywords) {
            logmsg "$_ ";
        }
        logmsg "\n";
    }
}



































if(($total && (($ok+$ign) != $total)) || !$total) {
    exit 1;
}
Changes to jni/curl/tests/server/Makefile.in.
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652

653
654
655



656
657
658
659
660
661
662
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







631
632
633
634
635
636
637

638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
jni/curl/tests/server/base64.pl became executable.
Changes to jni/curl/tests/server/getpart.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
 *   GPE_OUT_OF_MEMORY
 *   GPE_OK
 */

int getpart(char **outbuf, size_t *outlen,
            const char *main, const char *sub, FILE *stream)
{
# define MAX_TAG_LEN 79
  char couter[MAX_TAG_LEN + 1]; /* current outermost section */
  char cmain[MAX_TAG_LEN + 1];  /* current main section */
  char csub[MAX_TAG_LEN + 1];   /* current sub section */
  char ptag[MAX_TAG_LEN + 1];   /* potential tag */
  char patt[MAX_TAG_LEN + 1];   /* potential attributes */
  char *buffer = NULL;
  char *ptr;







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
 *   GPE_OUT_OF_MEMORY
 *   GPE_OK
 */

int getpart(char **outbuf, size_t *outlen,
            const char *main, const char *sub, FILE *stream)
{
# define MAX_TAG_LEN 200
  char couter[MAX_TAG_LEN + 1]; /* current outermost section */
  char cmain[MAX_TAG_LEN + 1];  /* current main section */
  char csub[MAX_TAG_LEN + 1];   /* current sub section */
  char ptag[MAX_TAG_LEN + 1];   /* potential tag */
  char patt[MAX_TAG_LEN + 1];   /* potential attributes */
  char *buffer = NULL;
  char *ptr;
Changes to jni/curl/tests/server/mqttd.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
                        FILE *output,
                        unsigned char *buffer, ssize_t len)
{
  char data[12000] = "";
  ssize_t i;
  unsigned char *ptr = buffer;
  char *optr = data;
  ssize_t width = 0;
  int left = sizeof(data);

  for(i = 0; i<len && (left >= 0); i++) {
    msnprintf(optr, left, "%02x", ptr[i]);
    width += 2;
    optr += 2;
    left -= 2;
  }
  fprintf(output, "%s %s %zx %s\n",
          dir == FROM_CLIENT? "client": "server",
          prefix, remlen,
          data);







<




<







209
210
211
212
213
214
215

216
217
218
219

220
221
222
223
224
225
226
                        FILE *output,
                        unsigned char *buffer, ssize_t len)
{
  char data[12000] = "";
  ssize_t i;
  unsigned char *ptr = buffer;
  char *optr = data;

  int left = sizeof(data);

  for(i = 0; i<len && (left >= 0); i++) {
    msnprintf(optr, left, "%02x", ptr[i]);

    optr += 2;
    left -= 2;
  }
  fprintf(output, "%s %s %zx %s\n",
          dir == FROM_CLIENT? "client": "server",
          prefix, remlen,
          data);
Changes to jni/curl/tests/server/rtspd.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
  }
  if(strstr(req->reqbuf, "Connection: close"))
    req->open = FALSE; /* close connection after this request */

  if(!req->pipe &&
     req->open &&
     req->prot_version >= 11 &&
     end &&
     req->reqbuf + req->offset > end + strlen(END_OF_HEADERS) &&
     (!strncmp(req->reqbuf, "GET", strlen("GET")) ||
      !strncmp(req->reqbuf, "HEAD", strlen("HEAD")))) {
    /* If we have a persistent connection, HTTP version >= 1.1
       and GET/HEAD request, enable pipelining. */
    req->checkindex = (end - req->reqbuf) + strlen(END_OF_HEADERS);
    req->pipelining = TRUE;







<







548
549
550
551
552
553
554

555
556
557
558
559
560
561
  }
  if(strstr(req->reqbuf, "Connection: close"))
    req->open = FALSE; /* close connection after this request */

  if(!req->pipe &&
     req->open &&
     req->prot_version >= 11 &&

     req->reqbuf + req->offset > end + strlen(END_OF_HEADERS) &&
     (!strncmp(req->reqbuf, "GET", strlen("GET")) ||
      !strncmp(req->reqbuf, "HEAD", strlen("HEAD")))) {
    /* If we have a persistent connection, HTTP version >= 1.1
       and GET/HEAD request, enable pipelining. */
    req->checkindex = (end - req->reqbuf) + strlen(END_OF_HEADERS);
    req->pipelining = TRUE;
Changes to jni/curl/tests/server/sws.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
234
235
236
237
238
239
240
241
242
243
244


245
246
247
248
249
250
251
    return false;
  }
}

/* parse the file on disk that might have a test number for us */
static int parse_cmdfile(struct httprequest *req)
{
  int testnum = DOCNUMBER_NOTHING;
  char buf[256];
  FILE *f = fopen(cmdfile, FOPEN_READTEXT);
  if(f) {


    while(fgets(buf, sizeof(buf), f)) {
      if(1 == sscanf(buf, "Testnum %d", &testnum)) {
        logmsg("[%s] cmdfile says testnum %d", cmdfile, testnum);
        req->testno = testnum;
      }
    }
    fclose(f);







<
<


>
>







234
235
236
237
238
239
240


241
242
243
244
245
246
247
248
249
250
251
    return false;
  }
}

/* parse the file on disk that might have a test number for us */
static int parse_cmdfile(struct httprequest *req)
{


  FILE *f = fopen(cmdfile, FOPEN_READTEXT);
  if(f) {
    int testnum = DOCNUMBER_NOTHING;
    char buf[256];
    while(fgets(buf, sizeof(buf), f)) {
      if(1 == sscanf(buf, "Testnum %d", &testnum)) {
        logmsg("[%s] cmdfile says testnum %d", cmdfile, testnum);
        req->testno = testnum;
      }
    }
    fclose(f);
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
    logmsg("Received Basic request, sending back data %ld", req->partno);
  }
  if(strstr(req->reqbuf, "Connection: close"))
    req->open = FALSE; /* close connection after this request */

  if(req->open &&
     req->prot_version >= 11 &&
     end &&
     req->reqbuf + req->offset > end + strlen(end_of_headers) &&
     !req->cl &&
     (!strncmp(req->reqbuf, "GET", strlen("GET")) ||
      !strncmp(req->reqbuf, "HEAD", strlen("HEAD")))) {
    /* If we have a persistent connection, HTTP version >= 1.1
       and GET/HEAD request, enable pipelining. */
    req->checkindex = (end - req->reqbuf) + strlen(end_of_headers);







<







744
745
746
747
748
749
750

751
752
753
754
755
756
757
    logmsg("Received Basic request, sending back data %ld", req->partno);
  }
  if(strstr(req->reqbuf, "Connection: close"))
    req->open = FALSE; /* close connection after this request */

  if(req->open &&
     req->prot_version >= 11 &&

     req->reqbuf + req->offset > end + strlen(end_of_headers) &&
     !req->cl &&
     (!strncmp(req->reqbuf, "GET", strlen("GET")) ||
      !strncmp(req->reqbuf, "HEAD", strlen("HEAD")))) {
    /* If we have a persistent connection, HTTP version >= 1.1
       and GET/HEAD request, enable pipelining. */
    req->checkindex = (end - req->reqbuf) + strlen(end_of_headers);
jni/curl/tests/sshserver.pl became a regular file.
jni/curl/tests/symbol-scan.pl became executable.
Changes to jni/curl/tests/testcurl.1.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "November 05, 2020" "Curl 7.75.0" "testcurl"

.SH NAME
testcurl.pl \- (automatically) test curl
.SH SYNOPSIS
.B testcurl.pl [options] [dir] > output
.SH DESCRIPTION
\fItestcurl.pl\fP is the master script to use for automatic testing of curl







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "November 05, 2020" "Curl 7.76.0" "testcurl"

.SH NAME
testcurl.pl \- (automatically) test curl
.SH SYNOPSIS
.B testcurl.pl [options] [dir] > output
.SH DESCRIPTION
\fItestcurl.pl\fP is the master script to use for automatic testing of curl
Changes to jni/curl/tests/unit/Makefile.in.
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708

709
710
711



712
713
714
715
716
717
718
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@

USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@



USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@







<














>



>
>
>







687
688
689
690
691
692
693

694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@

USE_HYPER = @USE_HYPER@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
USE_RUSTLS = @USE_RUSTLS@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
USE_WOLFSSH = @USE_WOLFSSH@
USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
Changes to jni/curl/tests/unit/unit1607.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {
      long port = 0;
      char ipaddress[MAX_IPADR_LEN] = {0};

      if(!addr && !tests[i].address[j])
        break;

      if(tests[i].address[j] == &skip)
        continue;







|







141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {
      int port = 0;
      char ipaddress[MAX_IPADR_LEN] = {0};

      if(!addr && !tests[i].address[j])
        break;

      if(tests[i].address[j] == &skip)
        continue;
Changes to jni/curl/tests/unit/unit1609.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {
      long port = 0;
      char ipaddress[MAX_IPADR_LEN] = {0};

      if(!addr && !tests[i].address[j])
        break;

      if(addr && !Curl_addr2string(addr->ai_addr, addr->ai_addrlen,
                                   ipaddress, &port)) {







|







143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {
      int port = 0;
      char ipaddress[MAX_IPADR_LEN] = {0};

      if(!addr && !tests[i].address[j])
        break;

      if(addr && !Curl_addr2string(addr->ai_addr, addr->ai_addrlen,
                                   ipaddress, &port)) {
jni/tcl/library/tzdata/Australia/Eucla became executable.